post invoice from rd shop
parent
61228c3e1c
commit
387e5a567a
|
@ -1,6 +1,6 @@
|
|||
<inherit inherit="account_menu">
|
||||
<item string="Settings" position="before">
|
||||
<item string="Ratchawat">
|
||||
<item string="Ratchawat Clinic">
|
||||
<item string="Account Product" action="clinic_setting_account_product"/>
|
||||
<item string="Account Patient" action="clinic_setting_account_patient"/>
|
||||
<item string="HD Case Expense" action="clinic_report_account_hd_case_summary"/>
|
||||
|
|
|
@ -1,8 +1,27 @@
|
|||
<inherit model="product" inherit="product_form">
|
||||
<field name="categ_id" position="after">
|
||||
<field name="patient_types"/>
|
||||
<tab string="Other" position="after">
|
||||
<tab string="Ratchawat Clinic">
|
||||
<group form_layout="stacked">
|
||||
<separator string="View Product"/>
|
||||
<field name="patient_types" nolabel="1" span="12">
|
||||
<list>
|
||||
<field name="code"/>
|
||||
<field name="name"/>
|
||||
<field name="default"/>
|
||||
</list>
|
||||
</field>
|
||||
<field name="create_time" position="after">
|
||||
<separator string="Account Product Setting"/>
|
||||
<field name="account_products" nolabel="1">
|
||||
<list>
|
||||
<field name="patient_type_id"/>
|
||||
<field name="ar_debit_id"/>
|
||||
<field name="ar_credit_id"/>
|
||||
<field name="type"/>
|
||||
</list>
|
||||
</field>
|
||||
<separator string="Report HD Case Summary Setting"/>
|
||||
<field name="report_visible"/>
|
||||
</field>
|
||||
</group>
|
||||
</tab>
|
||||
</tab>
|
||||
</inherit>
|
||||
|
|
|
@ -6,6 +6,7 @@ class Product(Model):
|
|||
'patient_types': fields.Many2Many("clinic.patient.type","Patient Types"),
|
||||
'departments': fields.One2Many('clinic.department.product','product_id','Departments'),
|
||||
'report_visible': fields.Boolean("Report Visible"),
|
||||
'account_products': fields.One2Many('clinic.setting.account.product','product_id','Account Products'),
|
||||
}
|
||||
|
||||
Product.register()
|
||||
|
|
|
@ -320,6 +320,41 @@ class Shop(Model):
|
|||
prod_acc=cst.get_product_account
|
||||
partner=obj.contact_id
|
||||
context['branch_id']=obj.branch_id.id
|
||||
track_id=obj.branch_id.track_id.id
|
||||
inv_lines=[]
|
||||
for line in obj.lines:
|
||||
if line.amount < 1:
|
||||
continue
|
||||
prod=line.product_id
|
||||
acc=prod_acc(prod.id,shop_type.id,'credit')
|
||||
account_id=acc.get("ar_credit_id",None)
|
||||
ar_debit_id=acc.get("ar_debit_id",None)
|
||||
if not account_id:
|
||||
raise Exception("No Income Credit Account for product [%s] %s"%(prod.code, prod.name))
|
||||
if not ar_debit_id:
|
||||
raise Exception("No Ar Debit Account for product [%s] %s"%(prod.code, prod.name))
|
||||
inv_lines.append(('create',{
|
||||
"product_id": prod.id,
|
||||
"description": line.description or "",
|
||||
"qty": line.qty,
|
||||
"uom_id": line.uom_id.id,
|
||||
"unit_price": line.price or 0,
|
||||
"amount": line.amount or 0,
|
||||
'account_id': account_id,
|
||||
'ar_debit_id': ar_debit_id,
|
||||
'track_id': track_id,
|
||||
}))
|
||||
def group_invoice_line(invoice_lines):
|
||||
invoice_vals={}
|
||||
for mode,invoice_line in invoice_lines:
|
||||
ar_debit_id=invoice_line['ar_debit_id']
|
||||
if not invoice_vals.get(ar_debit_id):
|
||||
invoice_vals[ar_debit_id]=[]
|
||||
del invoice_line['ar_debit_id']
|
||||
invoice_vals[ar_debit_id].append((mode,invoice_line))
|
||||
return invoice_vals
|
||||
invoices=group_invoice_line(inv_lines)
|
||||
for account_receiveable_id, lines in invoices.items():
|
||||
number=self._get_credit_number(context=context),
|
||||
vals={
|
||||
'number': number,
|
||||
|
@ -332,32 +367,11 @@ class Shop(Model):
|
|||
"related_id": "clinic.shop,%s"%obj.id,
|
||||
"currency_id": currency_id,
|
||||
"company_id": company_id,
|
||||
'patient_partner_id':partner.id, #to check before post
|
||||
'partner_id': partner.id,
|
||||
"lines": [],
|
||||
"lines": lines,
|
||||
'account_id': account_receiveable_id,
|
||||
}
|
||||
track_id=obj.branch_id.track_id.id
|
||||
for line in obj.lines:
|
||||
if line.amount < 1:
|
||||
continue
|
||||
prod=line.product_id
|
||||
acc=prod_acc(prod.id,shop_type.id,'credit')
|
||||
account_id=acc.get("ar_credit_id",None)
|
||||
ar_debit_id=acc.get("ar_debit_id",None)
|
||||
if not account_id:
|
||||
raise Exception("No Income Credit Account for product [%s] %s"%(prod.code, prod.name))
|
||||
if not ar_debit_id:
|
||||
raise Exception("No Ar Debit Account for product [%s] %s"%(prod.code, prod.name))
|
||||
vals['lines'].append(('create',{
|
||||
"product_id": prod.id,
|
||||
"description": line.description or "",
|
||||
"qty": line.qty,
|
||||
"uom_id": line.uom_id.id,
|
||||
"unit_price": line.price or 0,
|
||||
"amount": line.amount or 0,
|
||||
'account_id': account_id,
|
||||
'ar_debit_id': ar_debit_id,
|
||||
'track_id': track_id,
|
||||
}))
|
||||
inv_id=get_model("account.invoice").create(vals,context=context)
|
||||
inv=get_model("account.invoice").browse(inv_id)
|
||||
inv.post()
|
||||
|
|
Loading…
Reference in New Issue