L10N_CH : DTA : debug and modified log

bzr revid: pinky-a836c8d7e6b110f94e65c6828a6516921e517c62
This commit is contained in:
pinky 2007-01-02 12:16:59 +00:00
parent 654507e5bc
commit 2052f62ff7
3 changed files with 63 additions and 46 deletions

View File

@ -35,9 +35,9 @@ class account_dta(osv.osv):
'name': fields.binary('DTA file', readonly=True), 'name': fields.binary('DTA file', readonly=True),
'dta_line_ids': fields.one2many('account.dta.line','dta_id','DTA lines', readonly=True), 'dta_line_ids': fields.one2many('account.dta.line','dta_id','DTA lines', readonly=True),
'note': fields.text('Creation log', readonly=True), 'note': fields.text('Creation log', readonly=True),
'bank': fields.many2one('res.partner.bank','Bank', readonly=True), 'bank': fields.many2one('res.partner.bank','Bank', readonly=True,select=True),
'date': fields.date('Creation Date', readonly=True), 'date': fields.date('Creation Date', readonly=True,select=True),
'user_id': fields.many2one('res.users','User', readonly=True), 'user_id': fields.many2one('res.users','User', readonly=True, select=True),
} }
account_dta() account_dta()
@ -45,7 +45,7 @@ class account_dta_line(osv.osv):
_name = "account.dta.line" _name = "account.dta.line"
_description = "DTA line" _description = "DTA line"
_columns = { _columns = {
'name' : fields.many2one('account.invoice','Invoice'), 'name' : fields.many2one('account.invoice','Invoice', required=True),
'partner_id' : fields.many2one('res.partner','Partner'), 'partner_id' : fields.many2one('res.partner','Partner'),
'due_date' : fields.date('Due date'), 'due_date' : fields.date('Due date'),
'cashdisc_date' : fields.date('Cash Discount date'), 'cashdisc_date' : fields.date('Cash Discount date'),
@ -53,7 +53,11 @@ class account_dta_line(osv.osv):
'amount_invoice': fields.float('Invoiced Amount'), 'amount_invoice': fields.float('Invoiced Amount'),
'amount_cashdisc': fields.float('Cash Discount Amount'), 'amount_cashdisc': fields.float('Cash Discount Amount'),
'dta_id': fields.many2one('account.dta','Associated DTA', required=True, ondelete='cascade'), 'dta_id': fields.many2one('account.dta','Associated DTA', required=True, ondelete='cascade'),
'state' : fields.selection([('draft','Draft'),('cancel','Canceled'),('done','Done')],'State')
} }
_defaults = {
'state' : lambda *a :'draft',
}
account_dta_line() account_dta_line()

View File

@ -44,7 +44,7 @@
<field name="model">account.dta.line</field> <field name="model">account.dta.line</field>
<field name="type">tree</field> <field name="type">tree</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="DTA lines"> <tree string="DTA lines" editable="top">
<field name="name" /> <field name="name" />
<field name="partner_id" /> <field name="partner_id" />
<field name="due_date" /> <field name="due_date" />
@ -52,6 +52,7 @@
<field name="cashdisc_date" /> <field name="cashdisc_date" />
<field name="amount_cashdisc" /> <field name="amount_cashdisc" />
<field name="amount_to_pay" /> <field name="amount_to_pay" />
<field name="state" />
</tree> </tree>
</field> </field>
</record> </record>
@ -66,6 +67,7 @@
<field name="bank" /> <field name="bank" />
<field name="date" /> <field name="date" />
<field name="user_id" /> <field name="user_id" />
<field name="state" />
<field name="dta_line_ids" colspan="3"/> <field name="dta_line_ids" colspan="3"/>
<field name="note" colspan="3"/> <field name="note" colspan="3"/>
</form> </form>

View File

@ -61,7 +61,7 @@ ask_fields = {
check_form = """<?xml version="1.0"?> check_form = """<?xml version="1.0"?>
<form string="DTA file creation"> <form string="DTA file creation">
<separator colspan="4" string="DTA Details :" /> <separator colspan="4" string="DTA Details :" />
<field name="dta_line_ids" nolabel="1" widget="one2many_list" colspan="4"/> <field name="dta_line_ids" nolabel="1" colspan="4" />
</form> </form>
""" """
check_fields = { check_fields = {
@ -143,7 +143,7 @@ def _get_dta_lines(self,cr,uid,data,context):
'dta_id': id_dta, 'dta_id': id_dta,
})) }))
return {'dta_line_ids': lines} return {'dta_line_ids': lines,'dta_id': id_dta}
def c_ljust(s, size): def c_ljust(s, size):
""" """
@ -197,7 +197,6 @@ def _create_dta(self,cr,uid,data,context):
creation_date= time.strftime('%y%m%d') creation_date= time.strftime('%y%m%d')
err_log='' err_log=''
std_log=''
dta='' dta=''
valeur='' valeur=''
pool = pooler.get_pool(cr.dbname) pool = pooler.get_pool(cr.dbname)
@ -205,41 +204,47 @@ def _create_dta(self,cr,uid,data,context):
bank_name= bank.name or '' bank_name= bank.name or ''
bank_iban = bank.iban or '' bank_iban = bank.iban or ''
if not bank_name and bank_iban : if not bank_name and bank_iban :
err_log= err_log +'\nBank account not well defined.' return {'note':'Bank account not well defined.'}
user = pool.get('res.users').browse(cr,uid,[uid])[0] user = pool.get('res.users').browse(cr,uid,[uid])[0]
company= user.company_id company= user.company_id
co_addr= company.partner_id.address[0] co_addr= company.partner_id.address[0]
company_dta = company.dta_number or '' company_dta = company.dta_number or ''
if not company.dta_number : if not company.dta_number :
err_log= err_log +'\nNo dta number for the company.' return {'note':'No dta number for the company.' }
company_iban = company.partner_id and company.partner_id.bank_ids and company.partner_id.bank_ids[0]\ company_iban = company.partner_id and company.partner_id.bank_ids and company.partner_id.bank_ids[0]\
and company.partner_id.bank_ids[0].iban or '' and company.partner_id.bank_ids[0].iban or ''
if not company_iban : if not company_iban :
err_log= err_log +'\nNo iban number for the company.' return {'note':'No iban number for the company.'}
inv_obj = pool.get('account.invoice') inv_obj = pool.get('account.invoice')
dta_line_obj = pool.get('account.dta.line') dta_line_obj = pool.get('account.dta.line')
seq= 1 seq= 1
amount_tot= 0 amount_tot= 0
th_amount_tot= 0
dta_id=data['form']['dta_id']
count = 0
for line in data['form']['dta_line_ids']:
if not line[1]:
del data['form']['dta_line_ids'][count]
else:
dta_line_obj.write(cr, uid, [line[1]] , line[2] )
count += 1
th_amount_tot += line[2]['amount_to_pay']
if not dta_id :
return {'note':'No dta line'}
for dtal in dta_line_obj.browse(cr,uid,[ line[1] for line in data['form']['dta_line_ids'] ]): for dtal in dta_line_obj.browse(cr,uid,[ line[1] for line in data['form']['dta_line_ids'] ]):
dta_line = ""
i = dtal.name #dta_line.name = invoice's id i = dtal.name #dta_line.name = invoice's id
std_log = std_log + '''
--
Invoice : %s
Partner : %s
Invoice amount : %d
Amount Paid : %d
''' % (i.name, i.partner_id.name,i.amount_total, dtal.amount_to_pay )
if dtal.cashdisc_date:
std_log = std_log + " Cash Discount : %d if paid before %s" % (dtal.amount_cashdisc, dtal.cashdisc_date)
number = i.number or '' number = i.number or ''
currency = i.currency_id.code or '' currency = i.currency_id.code or ''
country = co_addr.country_id and co_addr.country_id.name or '' country = co_addr.country_id and co_addr.country_id.name or ''
@ -259,52 +264,60 @@ def _create_dta(self,cr,uid,data,context):
partner_city= '' partner_city= ''
partner_zip= '' partner_zip= ''
partner_country= '' partner_country= ''
err_log= err_log +'\nNo address for the invoice partner.' err_log= err_log +'\nNo address for the invoice partner. (invoice '+ (i.number or '??')+')'
if not partner_bank_account: if not partner_bank_account:
err_log= err_log +'\nNo bank account for the invoice partner. (invoice '+ (i.number or '??')+')' err_log= err_log +'\nNo bank account for the invoice partner. (invoice '+ (i.number or '??')+')'
continue
#header #header
try: try:
hdr= header('000000','',creation_date,company_iban,'idfi',seq,'836','0') # TODO id_file hdr= header('000000','',creation_date,company_iban,'idfi',seq,'836','0') # TODO id_file
except Exception,e : except Exception,e :
err_log= err_log +'\n'+ str(e) err_log= err_log +'\n'+ str(e)+'(invoice '+ (i.number or '??')+')'
#raise dtal_line_obj.write(cr,uid,[dtal.id],{'state':'cancel'})
continue
# segment 01: # segment 01:
try: try:
dta = dta + segment_01(hdr,company_dta , dta_line = dta_line + segment_01(hdr,company_dta ,
number,company_iban,valeur,currency,str(dtal.amount_to_pay)) number,company_iban,valeur,currency,str(dtal.amount_to_pay))
except Exception,e : except Exception,e :
err_log= err_log +'\n'+ str(e) err_log= err_log +'\n'+ str(e)+'(invoice '+ (i.number or '??')+')'
#raise dtal_line_obj.write(cr,uid,[dtal.id],{'state':'cancel'})
continue
# adresse donneur d'ordre # adresse donneur d'ordre
try: try:
dta = dta + segment_02(company.name,co_addr.street,co_addr.zip,co_addr.city,country,cours='') dta_line = dta_line + segment_02(company.name,co_addr.street,co_addr.zip,co_addr.city,country,cours='')
except Exception,e : except Exception,e :
err_log= err_log +'\n'+ str(e) err_log= err_log +'\n'+ str(e)+'(invoice '+ (i.number or '??')+')'
#raise dtal_line_obj.write(cr,uid,[dtal.id],{'state':'cancel'})
continue
# donnees de la banque # donnees de la banque
try: try:
dta = dta + segment_03(bank_name,'',bank_iban) dta_line = dta_line + segment_03(bank_name,'',bank_iban)
except Exception,e : except Exception,e :
err_log= err_log +'\n'+ str(e) err_log= err_log +'\n'+ str(e)+'(invoice '+ (i.number or '??')+')'
#raise dtal_line_obj.write(cr,uid,[dtal.id],{'state':'cancel'})
continue
# adresse du beneficiaire # adresse du beneficiaire
try: try:
dta = dta + segment_04(partner_name,partner_street,partner_zip,partner_city,partner_country,cours='') dta_line = dta_line + segment_04(partner_name,partner_street,partner_zip,partner_city,partner_country,cours='')
except Exception,e : except Exception,e :
err_log= err_log +'\n'+ str(e) err_log= err_log +'\n'+ str(e)+'(invoice '+ (i.number or '??')+')'
#raise dtal_line_obj.write(cr,uid,[dtal.id],{'state':'cancel'})
continue
# communication & reglement des frais # communication & reglement des frais
try: try:
dta = dta + segment_05(motif='I',ref1='',ref2=i.reference or '',ref3='',format='0') #FIXME : motif dta_line = dta_line + segment_05(motif='I',ref1='',ref2=i.reference or '',ref3='',format='0') #FIXME : motif
except Exception,e : except Exception,e :
err_log= err_log +'\n'+ str(e) err_log= err_log +'\n'+ str(e)+'(invoice '+ (i.number or '??')+')'
#raise dtal_line_obj.write(cr,uid,[dtal.id],{'state':'cancel'})
continue
dta = dta + dta_line
amount_tot += dtal.amount_to_pay amount_tot += dtal.amount_to_pay
inv_obj.write(cr,uid,[i.id],{'dta_state':'paid'}) inv_obj.write(cr,uid,[i.id],{'dta_state':'paid'})
dta_line_obj.write(cr,uid,[dtal.id],{'state':'done'})
seq += 1 seq += 1
@ -314,14 +327,12 @@ def _create_dta(self,cr,uid,data,context):
dta = dta + total(header('000000','',creation_date,company_iban,str(uid),seq,'890','0')\ dta = dta + total(header('000000','',creation_date,company_iban,str(uid),seq,'890','0')\
, str(amount_tot)) , str(amount_tot))
except Exception,e : except Exception,e :
err_log= err_log +'\n'+ str(e) err_log= err_log +'\n'+ str(e) + 'CORRUPTED FILE !\n'
#raise #raise
err_log = err_log and 'CORRUPTED FILE !\n'+err_log or 'OK' err_log = err_log + "\nSummary :\nTotal amount paid : %.2f\nTotal amount expected : %.2f"%(amount_tot,th_amount_tot)
pool.get('account.dta').write(cr,uid,[dta_id],{'note':err_log,'name':b64encode(dta or "")})
err_log = err_log + '\nParsed DTA lines :\n' + std_log
pool.get('account.dta').write(cr,uid,[dtal.dta_id.id],{'note':err_log,'name':b64encode(dta)})
return {'note':err_log, 'dta': b64encode(dta)} return {'note':err_log, 'dta': b64encode(dta)}