paid invoice on hdcase

paully
watcha.h 2017-11-24 15:28:42 +07:00
parent 25e453232a
commit 1062124931
4 changed files with 35 additions and 0 deletions

View File

@ -55,6 +55,7 @@
<field name="cash_account_id"/>
<field name="income_account_id" string="Account Receivable"/>
<field name="import_account_id"/>
<field name="hdcase_payment_account_id"/>
</tab>
<tab string="Reporting">
<field name="helper_categ_id"/>

View File

@ -135,6 +135,7 @@
<list colors='{"#9f9":[["state","=","paid"]]}'>
<head>
<button string="Print" action="clinic_hdcase_invoice_print" action_options="convert=pdf" icon="print"/>
<button string="Pay" method="pay_invoice" type="success"/>
</head>
<field name="number"/>
<field name="ref"/>

View File

@ -434,4 +434,36 @@ class AccountInvoice(Model):
data['signature']=get_file_path(cst.signature)
return data
def pay_invoice(self, ids, context={}):
paid_inv=[]
for obj in self.browse(ids):
if obj.state!='waiting_payment':
continue
rel=obj.related_id
if rel and rel._model=='clinic.hd.case':
clinic_setting=get_model("clinic.setting").browse(1)
if not clinic_setting.hdcase_payment_account_id:
raise Exception("Missing HDCase Payment Account in setting!")
inv_pm_id=get_model("invoice.payment").create({
'date': time.strftime("%Y-%m-%d"),
'invoice_id': obj.id,
'account_id': clinic_setting.hdcase_payment_account_id.id,
'ref': rel.number,
'amount': obj.amount_due,
})
inv_pm=get_model("invoice.payment").browse(inv_pm_id)
inv_pm.add_payment(context)
for pm_line in obj.payments:
pm=pm_line.payment_id
pm.write({
'related_id': "clinic.hd.case,%s"%rel.id,
})
paid_inv.append(obj.number)
if not paid_inv:
raise Exception("Nothing to paid!")
return {
'flash': 'Invoice: %s has been paid'%(','.join(paid_inv)),
}
AccountInvoice.register()

View File

@ -58,6 +58,7 @@ class ClinicSetting(Model):
"cash_account_id": fields.Many2One("account.account","Cash Account",multi_company=True),
"income_account_id": fields.Many2One("account.account","Income Account",multi_company=True),
"import_account_id": fields.Many2One("account.account","Import Account",multi_company=True),
"hdcase_payment_account_id": fields.Many2One("account.account","HDCase Payment Account",multi_company=True),
'helper_categ_id': fields.Many2One("clinic.staff.categ","Helper Category"),
'base_salary_day': fields.Float("Base Salary Day"),
'next_date': fields.DateTime("Next Gen"),