conv_bal
watcha.h@almacom.co.th 2015-03-26 16:11:19 +07:00
parent 1fcc52bbb6
commit 72b440b69c
4 changed files with 59 additions and 4 deletions

View File

@ -39,10 +39,27 @@
<field name="amount"/> <field name="amount"/>
</list> </list>
</field> </field>
<group span="9" columns="1"> <group span="8" columns="1">
</group> </group>
<group span="3" columns="1"> <group span="4" columns="1">
<field name="sub_total"/>
<field name="tax_amount"/>
<field name="total"/> <field name="total"/>
<field name="payment_lines">
<template>
{{#each context.data}}
<div class="form-group nf-field">
<label class="control-label col-md-4">Less
<a href="#name=payment&amp;mode=form&amp;active_id={{payment_id.0.}}">Payment</a>
</label>
<div class="col-md-8" style="text-align:right">
{{currency amount}}
</div>
</div>
{{/each}}
</template>
</field>
<field name="due_amount"/>
</group> </group>
</tab> </tab>
<tab string="Accounting"> <tab string="Accounting">

View File

@ -116,6 +116,7 @@ from . import matching_hdcase
from . import sale_order from . import sale_order
from . import shop from . import shop
from . import shop_line from . import shop_line
from . import shop_payment
from . import product from . import product
from . import base_user from . import base_user
from . import select_company from . import select_company

View File

@ -16,12 +16,20 @@ class Shop(Model):
st=get_model("clinic.setting").browse(1) st=get_model("clinic.setting").browse(1)
shop_categs=[x.id for x in st.shop_categs] shop_categs=[x.id for x in st.shop_categs]
for obj in self.browse(ids): for obj in self.browse(ids):
total=0 sub_total=0
tax_amount=0 #XXX
for line in obj.lines: for line in obj.lines:
amt=line.amount or 0 amt=line.amount or 0
total+=amt sub_total+=amt
total=sub_total
total=total-tax_amount
for pm in obj.payments:
total-=pm.amount_payment
res[obj.id]={ res[obj.id]={
'sub_total': sub_total,
'tax_amount': tax_amount,
'total': total, 'total': total,
'due_amount': total,
'shop_categs': shop_categs, 'shop_categs': shop_categs,
} }
return res return res
@ -36,7 +44,10 @@ class Shop(Model):
'department_id': fields.Many2One("clinic.department","Department",search=True), 'department_id': fields.Many2One("clinic.department","Department",search=True),
'branch_id': fields.Many2One("clinic.branch","Branch",search=True), 'branch_id': fields.Many2One("clinic.branch","Branch",search=True),
'lines': fields.One2Many('clinic.shop.line','shop_id','Lines'), 'lines': fields.One2Many('clinic.shop.line','shop_id','Lines'),
'sub_total': fields.Float("Subtotal",function="_get_all",function_multi=True),
'total': fields.Float("Total",function="_get_all",function_multi=True), 'total': fields.Float("Total",function="_get_all",function_multi=True),
'due_amount': fields.Float("Due Amount",function="_get_all",function_multi=True),
'tax_amount': fields.Float("Tax Amount",function="_get_all",function_multi=True),
'user_id': fields.Many2One("base.user","Sale Man"), 'user_id': fields.Many2One("base.user","Sale Man"),
'state': fields.Selection([['draft','Draft'],['waiting_payment','Waiting Payment'],['paid','Paid'],['cancelled','Cancelled']],'State'), 'state': fields.Selection([['draft','Draft'],['waiting_payment','Waiting Payment'],['paid','Paid'],['cancelled','Cancelled']],'State'),
"pickings": fields.One2Many("stock.picking","related_id","Pickings"), "pickings": fields.One2Many("stock.picking","related_id","Pickings"),
@ -54,6 +65,7 @@ class Shop(Model):
'cheque_no': fields.Char("Cheque No."), 'cheque_no': fields.Char("Cheque No."),
'hd_case_call': fields.Boolean("HD Case Call"), 'hd_case_call': fields.Boolean("HD Case Call"),
'note': fields.Text("Note"), 'note': fields.Text("Note"),
"payment_lines": fields.One2Many("clinic.shop.payment","shop_id","Payment Lines"),
} }
@ -450,6 +462,10 @@ class Shop(Model):
obj.write({ obj.write({
'state': 'paid', 'state': 'paid',
'pay_type': 'cash', 'pay_type': 'cash',
'payment_lines': [('create',{
'payment_id': payment_id,
'amount': payment.amount_payment,
})],
}) })
def to_draft(self,ids,context={}): def to_draft(self,ids,context={}):
@ -468,6 +484,8 @@ class Shop(Model):
for picking in obj.pickings: for picking in obj.pickings:
picking.to_draft(context=context) picking.to_draft(context=context)
picking.delete() picking.delete()
for pm_line in obj.payment_lines:
pm_line.delete()
obj.write({ obj.write({
'state': 'draft', 'state': 'draft',
}) })

View File

@ -0,0 +1,19 @@
from netforce.model import Model, fields
class ShopPayment(Model):
_name="clinic.shop.payment"
_transient=True
_fields={
'shop_id': fields.Many2One("clinic.hd.case","HD Case",on_delete="cascade"),
'payment_id': fields.Many2One("account.payment","Payment",on_delete="cascade"),
'account_id': fields.Many2One("account.account","Account"),
'amount': fields.Float("Amount"),
}
_defaults={
'amount': 0.0,
}
ShopPayment.register()