42 lines
1.3 KiB
Python
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()
|