mirror of
https://bitbucket.org/presik/trytonpsk-purchase_report.git
synced 2023-12-14 05:22:52 +01:00
modified import data purchases
This commit is contained in:
parent
eef66ec2b1
commit
dc64b1032d
1 changed files with 42 additions and 47 deletions
89
purchase.py
89
purchase.py
|
@ -19,67 +19,62 @@ _STATES = {
|
|||
'readonly': Eval('state') != 'draft',
|
||||
}
|
||||
|
||||
class Purchase:
|
||||
__metaclass__ = PoolMeta
|
||||
class Purchase(metaclass=PoolMeta):
|
||||
__name__ = 'purchase.purchase'
|
||||
|
||||
@classmethod
|
||||
def import_data(cls, fields_names, data):
|
||||
pool = Pool()
|
||||
PurchaseLine = pool.get('purchase.line')
|
||||
Product = pool.get('product.product')
|
||||
Party = pool.get('party.party')
|
||||
Address = pool.get('party.address')
|
||||
PurchaseLine = pool.get('purchase.line')
|
||||
|
||||
count = 0
|
||||
head = data[0]
|
||||
purchase_date = head[1]
|
||||
party = head[3]
|
||||
year, month, day = purchase_date.split('-')
|
||||
purchase_date = date(int(year), int(month), int(day))
|
||||
|
||||
address = Address.search([
|
||||
('party', '=', party)
|
||||
])
|
||||
|
||||
partys = Party.search([
|
||||
('id_number', '=', party)
|
||||
])
|
||||
|
||||
if not partys:
|
||||
return count
|
||||
else:
|
||||
party_id = partys[0].id
|
||||
|
||||
if not address:
|
||||
return count
|
||||
else:
|
||||
address_id = address[0].id
|
||||
|
||||
purchase, = cls.create([{
|
||||
'purchase_date': purchase_date,
|
||||
'party': party_id,
|
||||
'invoice_address': address_id,
|
||||
'payment_term': 2
|
||||
}])
|
||||
|
||||
lines_to_create = []
|
||||
for row in data[3:]:
|
||||
count += 1
|
||||
products = Product.search([
|
||||
('code', '=', row[0])
|
||||
purchase_to_create = {}
|
||||
create_lines = []
|
||||
for row in data[1:]:
|
||||
year, month, day = row[2].split('-')
|
||||
purchase_date = date(int(year), int(month), int(day))
|
||||
partys = Party.search([
|
||||
('id_number', '=', row[1])
|
||||
])
|
||||
if not partys:
|
||||
continue
|
||||
party_id = partys[0].id
|
||||
address = Address.search([
|
||||
('party', '=', party_id)
|
||||
])
|
||||
address_id = address[0].id if address else None
|
||||
if row[0] not in purchase_to_create.keys():
|
||||
purchase, = cls.create([{
|
||||
'purchase_date': purchase_date,
|
||||
'party': party_id,
|
||||
'reference': row[0],
|
||||
'invoice_address': address_id,
|
||||
'payment_term': None,
|
||||
}])
|
||||
purchase_to_create[row[0]] = purchase.id
|
||||
count += 1
|
||||
|
||||
lines_to_create.append({
|
||||
'purchase': purchase,
|
||||
'product': products[0].id,
|
||||
'quantity': row[1],
|
||||
'description': row[2],
|
||||
products = Product.search([
|
||||
('code', '=', row[3])
|
||||
])
|
||||
if not products:
|
||||
continue
|
||||
product = products[0]
|
||||
product_id = product.id
|
||||
|
||||
create_lines.append({
|
||||
'purchase': purchase_to_create[row[0]],
|
||||
'product': product_id,
|
||||
'quantity': row[5],
|
||||
'description': row[4],
|
||||
'unit': 1,
|
||||
'unit_price': Decimal(row[3]),
|
||||
'unit_price': Decimal(row[6]),
|
||||
'taxes': [('add', product.supplier_taxes_used)],
|
||||
})
|
||||
|
||||
PurchaseLine.create(lines_to_create)
|
||||
PurchaseLine.create(create_lines)
|
||||
return count
|
||||
|
||||
class PurchaseLine:
|
||||
|
|
Loading…
Reference in a new issue