clinic/netforce_clinic/models/invoice_payment.py

42 lines
1.3 KiB
Python

from netforce.model import Model, get_model
class InvoicePayment(Model):
_inherit="invoice.payment"
def add_payment(self,ids,context={}):
obj=self.browse(ids)[0]
inv=obj.invoice_id
if inv.inv_type not in ("invoice","debit"):
raise Exception("Wrong invoice type")
if obj.amount>inv.amount_due:
raise Exception("Amount paid exceeds due amount")
vals={
"type": inv.type=="out" and "in" or "out",
"pay_type": "invoice",
"partner_id": inv.partner_id.id,
"date": obj.date,
"ref": obj.ref,
"account_id": obj.account_id.id,
"currency_id": inv.currency_id.id,
"lines": [("create",{
"type": "invoice",
"invoice_id": inv.id,
"account_id": inv.account_id.id,
"amount": obj.amount,
})],
}
pmt_id=get_model("account.payment").create(vals,context={"type":vals["type"]})
# to check when before payment post
ctx={
'hdcase_reconcile':inv.hdcase_reconcile,
}
get_model("account.payment").post([pmt_id],context=ctx)
return {
"next": {
"name": "view_invoice",
"active_id": inv.id,
}
}
InvoicePayment.register()