improve conversion balance
parent
27105dba01
commit
e20d25029f
|
@ -1,7 +1,3 @@
|
||||||
from . import clinic_setting
|
from . import clinic_setting
|
||||||
#from . import update_account_tracking
|
#from . import conv_bal
|
||||||
#from . import print_labor_cost
|
from . import repost_invoice
|
||||||
#from . import hdcase
|
|
||||||
from . import conv_bal
|
|
||||||
#from . import remove_conv_bal
|
|
||||||
#from . import update_labor_cost_line
|
|
||||||
|
|
|
@ -9,16 +9,21 @@ class Migration(migration.Migration):
|
||||||
def migrate(self):
|
def migrate(self):
|
||||||
set_active_user(1)
|
set_active_user(1)
|
||||||
set_active_company(1)
|
set_active_company(1)
|
||||||
|
#for mv in get_model("account.move").search_browse([['number','ilike', 'OPEN']]):
|
||||||
|
#mv.to_draft()
|
||||||
|
#mv.delete()
|
||||||
cbv_id=24
|
cbv_id=24
|
||||||
cbv=get_model("conv.bal").browse(cbv_id)
|
cbv=get_model("conv.bal").browse(cbv_id)
|
||||||
cbv.write({
|
cbv.write({
|
||||||
|
'date_fmt': '%Y-%m-%d',
|
||||||
'file': 'tb.csv',
|
'file': 'tb.csv',
|
||||||
})
|
})
|
||||||
print("import acc file (step 1) running ...")
|
print("import acc file (step 1) running ...")
|
||||||
get_model("conv.bal").import_acc_file([cbv.id],context={})
|
get_model("conv.bal").import_acc_file([cbv.id],context={})
|
||||||
get_model("conv.bal").import_acc([cbv.id],context={})
|
get_model("conv.bal").import_acc([cbv.id],context={})
|
||||||
|
|
||||||
cbv.write({
|
cbv.write({
|
||||||
|
'date_fmt': '%d/%m/%Y',
|
||||||
'file': 'ar.csv',
|
'file': 'ar.csv',
|
||||||
})
|
})
|
||||||
print("import sale file (step 2)running ...")
|
print("import sale file (step 2)running ...")
|
||||||
|
@ -37,7 +42,7 @@ class Migration(migration.Migration):
|
||||||
'date_fmt': '%Y-%m-%d',
|
'date_fmt': '%Y-%m-%d',
|
||||||
})
|
})
|
||||||
|
|
||||||
# next 3
|
print(">> next 3")
|
||||||
print("create_open_entry...")
|
print("create_open_entry...")
|
||||||
cbv.create_open_entry()
|
cbv.create_open_entry()
|
||||||
print("create_sale_invoices...")
|
print("create_sale_invoices...")
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
from netforce.model import get_model
|
||||||
|
from netforce import migration
|
||||||
|
from netforce.access import set_active_user, set_active_company
|
||||||
|
|
||||||
|
class Migration(migration.Migration):
|
||||||
|
_name="clinic.repos.invoice"
|
||||||
|
_version="2.10.0"
|
||||||
|
|
||||||
|
def migrate(self):
|
||||||
|
set_active_user(1)
|
||||||
|
set_active_company(1)
|
||||||
|
for hdcase in get_model('clinic.hd.case').search_browse([]):
|
||||||
|
for inv in hdcase.invoices:
|
||||||
|
if inv.state=='waiting_payment':
|
||||||
|
print('repost ---> ', inv.number)
|
||||||
|
inv.to_draft()
|
||||||
|
inv.post()
|
||||||
|
print("Done!")
|
||||||
|
for shop in get_model('clinic.shop').search_browse([]):
|
||||||
|
for inv in shop.invoices:
|
||||||
|
print('repost ---> ', inv.number)
|
||||||
|
inv.to_draft()
|
||||||
|
inv.post()
|
||||||
|
return True
|
||||||
|
|
||||||
|
Migration.register()
|
|
@ -141,3 +141,4 @@ from . import report_cycle_setting
|
||||||
from . import print_labor_cost
|
from . import print_labor_cost
|
||||||
from . import print_labor_cost_line
|
from . import print_labor_cost_line
|
||||||
from . import conv_bal
|
from . import conv_bal
|
||||||
|
from . import conv_sale_invoice
|
||||||
|
|
|
@ -249,6 +249,7 @@ class AccountInvoice(Model):
|
||||||
desc=line['description']
|
desc=line['description']
|
||||||
ar_debit_id=None
|
ar_debit_id=None
|
||||||
#ar_credit_id=None
|
#ar_credit_id=None
|
||||||
|
# search from patient_type
|
||||||
for prod_id in get_model('product').search([['name','=',desc]]):
|
for prod_id in get_model('product').search([['name','=',desc]]):
|
||||||
for ptype_id in get_model("clinic.patient.type").search([['contact_id','=',partner.id]]):
|
for ptype_id in get_model("clinic.patient.type").search([['contact_id','=',partner.id]]):
|
||||||
acc=prod_acc(prod_id,ptype_id,'credit')
|
acc=prod_acc(prod_id,ptype_id,'credit')
|
||||||
|
@ -256,8 +257,17 @@ class AccountInvoice(Model):
|
||||||
ar_debit_id=acc.get("ar_debit_id")
|
ar_debit_id=acc.get("ar_debit_id")
|
||||||
if ar_debit_id:
|
if ar_debit_id:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
# search from patient
|
||||||
if not ar_debit_id:
|
if not ar_debit_id:
|
||||||
raise Exception("Missing AR Debit Account for product %s"%(desc))
|
for pt in get_model('clinic.patient').search_browse([['partner_id','=',partner.id]]):
|
||||||
|
acc=prod_acc(prod_id,pt.type_id.id,'credit')
|
||||||
|
ar_debit_id=acc.get("ar_debit_id")
|
||||||
|
if ar_debit_id:
|
||||||
|
break
|
||||||
|
if not ar_debit_id:
|
||||||
|
import pdb; pdb.set_trace()
|
||||||
|
raise Exception("Missing AR Debit Account for product %s"%(desc), partner.id, partner.name)
|
||||||
line_vals={
|
line_vals={
|
||||||
"description": desc,
|
"description": desc,
|
||||||
"account_id": ar_debit_id,
|
"account_id": ar_debit_id,
|
||||||
|
|
|
@ -27,10 +27,12 @@ class ConvBal(Model):
|
||||||
"reconcile_move_line_id": inv.move_line_id.id,
|
"reconcile_move_line_id": inv.move_line_id.id,
|
||||||
"currency_id": inv.account_id.currency_id.id,
|
"currency_id": inv.account_id.currency_id.id,
|
||||||
"currency_rate": inv.amount_due/inv.amount_cur if inv.amount_cur else None,
|
"currency_rate": inv.amount_due/inv.amount_cur if inv.amount_cur else None,
|
||||||
|
"department_id": inv.department_id.id,
|
||||||
}
|
}
|
||||||
line_vals={
|
line_vals={
|
||||||
"description": desc,
|
"description": desc,
|
||||||
"amount": abs(inv.amount_cur or inv.amount_due),
|
"amount": abs(inv.amount_cur or inv.amount_due),
|
||||||
|
"track_id": inv.track_id.id,
|
||||||
}
|
}
|
||||||
vals["lines"].append(("create",line_vals))
|
vals["lines"].append(("create",line_vals))
|
||||||
res=get_model("account.invoice").search([["number","=",inv.number]])
|
res=get_model("account.invoice").search([["number","=",inv.number]])
|
||||||
|
@ -66,11 +68,26 @@ class ConvBal(Model):
|
||||||
row+="," #XXX append blank column for Amount Cur
|
row+="," #XXX append blank column for Amount Cur
|
||||||
line=dict(zip(headers,row))
|
line=dict(zip(headers,row))
|
||||||
#print("line",line)
|
#print("line",line)
|
||||||
|
track_id=None
|
||||||
|
department_id=None
|
||||||
|
department_name=line.get("Department")
|
||||||
|
if department_name:
|
||||||
|
for dpt in get_model("clinic.department").search_browse([['name','=',department_name]]):
|
||||||
|
department_id=dpt.id
|
||||||
|
track_id=dpt.branch_id.track_id.id
|
||||||
if not line.get("Number"):
|
if not line.get("Number"):
|
||||||
continue
|
continue
|
||||||
number=line["Number"].strip()
|
number=line["Number"].strip()
|
||||||
if not number:
|
if not number:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
##XXX remove invoice
|
||||||
|
#for inv in get_model('account.invoice').search_browse([['number','=', number]]):
|
||||||
|
#print('number --> ', number)
|
||||||
|
#inv.to_draft()
|
||||||
|
#inv.delete()
|
||||||
|
#continue
|
||||||
|
|
||||||
ref=line["Reference"].strip()
|
ref=line["Reference"].strip()
|
||||||
contact_name=line["Contact"].strip()
|
contact_name=line["Contact"].strip()
|
||||||
res=get_model("partner").search([["name","=",contact_name]])
|
res=get_model("partner").search([["name","=",contact_name]])
|
||||||
|
@ -100,7 +117,6 @@ class ConvBal(Model):
|
||||||
raise Exception("Account code not found: %s"%acc_code)
|
raise Exception("Account code not found: %s"%acc_code)
|
||||||
acc_id=res[0]
|
acc_id=res[0]
|
||||||
amount_due=amts[count]
|
amount_due=amts[count]
|
||||||
print(acc_code, acc_id, amount_due)
|
|
||||||
vals={
|
vals={
|
||||||
"conv_id": obj.id,
|
"conv_id": obj.id,
|
||||||
"number": number,
|
"number": number,
|
||||||
|
@ -111,10 +127,11 @@ class ConvBal(Model):
|
||||||
"amount_due": amount_due,
|
"amount_due": amount_due,
|
||||||
"account_id": acc_id,
|
"account_id": acc_id,
|
||||||
"amount_cur": amount_due, #XXX
|
"amount_cur": amount_due, #XXX
|
||||||
|
'track_id': track_id,
|
||||||
|
'department_id': department_id,
|
||||||
}
|
}
|
||||||
get_model("conv.sale.invoice").create(vals)
|
get_model("conv.sale.invoice").create(vals)
|
||||||
count+=1
|
count+=1
|
||||||
print("*"*80)
|
|
||||||
elif len(amts) >= 1 and len(acc_codes)<=1:
|
elif len(amts) >= 1 and len(acc_codes)<=1:
|
||||||
acc_code=acc_codes[0].strip()
|
acc_code=acc_codes[0].strip()
|
||||||
res=get_model("account.account").search([["code","=",acc_code]])
|
res=get_model("account.account").search([["code","=",acc_code]])
|
||||||
|
@ -133,6 +150,8 @@ class ConvBal(Model):
|
||||||
"amount_due": amount_due,
|
"amount_due": amount_due,
|
||||||
"account_id": acc_id,
|
"account_id": acc_id,
|
||||||
"amount_cur": amount_due, #XXX
|
"amount_cur": amount_due, #XXX
|
||||||
|
'track_id': track_id,
|
||||||
|
'department_id': department_id,
|
||||||
}
|
}
|
||||||
get_model("conv.sale.invoice").create(vals)
|
get_model("conv.sale.invoice").create(vals)
|
||||||
else:
|
else:
|
||||||
|
@ -150,6 +169,8 @@ class ConvBal(Model):
|
||||||
"amount_due": amount_due,
|
"amount_due": amount_due,
|
||||||
"account_id": acc_id,
|
"account_id": acc_id,
|
||||||
"amount_cur": amount_cur,
|
"amount_cur": amount_cur,
|
||||||
|
'track_id': track_id,
|
||||||
|
'department_id': department_id,
|
||||||
}
|
}
|
||||||
get_model("conv.sale.invoice").create(vals)
|
get_model("conv.sale.invoice").create(vals)
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
from netforce.model import Model, fields
|
||||||
|
|
||||||
|
class ConvSaleInvoice(Model):
|
||||||
|
_inherit="conv.sale.invoice"
|
||||||
|
_transient=True
|
||||||
|
_fields={
|
||||||
|
"department_id": fields.Many2One("clinic.department","Department"),
|
||||||
|
"track_id": fields.Many2One("account.track.categ","Track1"),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ConvSaleInvoice.register()
|
Loading…
Reference in New Issue