clinic/netforce_clinic/migrations/update_line_amount.py

82 lines
3.3 KiB
Python
Raw Permalink Normal View History

2016-11-29 16:30:11 +00:00
import csv
import xlrd
from netforce.model import get_model
from netforce import migration
from netforce.access import set_active_user, set_active_company
from netforce.database import get_connection
class Migration(migration.Migration):
_name="clinic.update.line.amount"
_version="2.12.5"
def migrate(self):
set_active_company(1)
set_active_user(1)
cond=[
['date','>=','2016-11-10'],
['date','<=','2016-11-15'],
['state','in',['waiting_payment','paid']],
]
settings=get_model('settings').browse(1)
cst=get_model("clinic.setting").browse(1)
prod_acc=cst.get_product_account
currency_id=settings.currency_id.id
for hdcase in get_model("clinic.hd.case").search_browse(cond):
print("hdcase.number ", hdcase.id, hdcase.number)
patient=hdcase.patient_id
ptype=patient.type_id
partner=ptype.contact_id
track_id=hdcase.branch_id.track_id.id
for line in hdcase.lines:
categ=line.product_categ_id
if line.reimbursable=='yes' and categ.id==34: #Erythopo...
prod=line.product_id
acc=prod_acc(prod.id,hdcase.patient_type_id.id)
account_id=acc.get("ar_credit_id",None)
ar_debit_id=acc.get("ar_debit_id",None) # account receiveable
amount=line.amount or (line.price*line.qty) or 0
if not amount:
continue
lines=[
('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": amount,
'account_id': account_id,
#'ar_debit_id': ar_debit_id,
'track_id': track_id,
})
]
context={
'date' : hdcase.date,
'branch_id': hdcase.branch_id.id,
"type": "out",
"inv_type": "invoice",
}
vals={
"type": "out",
"inv_type": "invoice",
"tax_type": "tax_in",
'date': hdcase.date,
'due_date': hdcase.date,
"ref": '%s (%s)'%(patient.name or '',patient.number or ''),
'department_id': hdcase.department_id.id,
"related_id": "clinic.hd.case,%s"%hdcase.id,
"currency_id": currency_id,
"company_id": hdcase.company_id.id,
"partner_id": partner.id,
'patient_partner_id':patient.partner_id.id,
'account_id':account_id,
'lines':lines,
}
inv_id=get_model("account.invoice").create(vals,context=context)
inv=get_model("account.invoice").browse(inv_id)
inv.post()
Migration.register()