Kuldeep Joshi(OpenERP) has proposed merging 
lp:~openerp-dev/openobject-addons/trunk-import_quickbooks-purchase-order-link-with-purchase-invoice-kjo
 into lp:~openerp-dev/openobject-addons/trunk-import_quickbooks.

Requested reviews:
  Bhumika (OpenERP) (sbh-openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-import_quickbooks-purchase-order-link-with-purchase-invoice-kjo/+merge/74965

- Purchase Order Link with Purchase Invoice
- Set Account_id in Customer and Purchase Invoice
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-import_quickbooks-purchase-order-link-with-purchase-invoice-kjo/+merge/74965
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/trunk-import_quickbooks.
=== modified file 'import_base/import_framework.py'
--- import_base/import_framework.py	2011-09-05 11:24:13 +0000
+++ import_base/import_framework.py	2011-09-12 10:38:24 +0000
@@ -213,6 +213,7 @@
                      To be used to avoid duplication of data that don't have ids
         """
         sugar_instance = "import_quickbooks"
+        
         name = name.replace('.', '_').replace(',', '_')
         return sugar_instance + "_" + table + "_" + name
     

=== modified file 'import_quickbooks/wizard/import_data_from_quickbook.py'
--- import_quickbooks/wizard/import_data_from_quickbook.py	2011-09-07 07:02:30 +0000
+++ import_quickbooks/wizard/import_data_from_quickbook.py	2011-09-12 10:38:24 +0000
@@ -507,7 +507,7 @@
             if val.get('ItemId'):
                 product_id = self.mapped_id_if_exist('product.product', [('name', '=', val.get('ItemName')[0])], self.TABLE_ITEM, val.get('ItemId')[0])
                 fields = ['name', 'quantity', 'price_unit', 'account_id/id', 'product_id/id']
-                data = [val.get('Desc', 'test')[0], val.get('Qty') and val.get('Qty')[0], val.get('UnitPrice') and val.get('UnitPrice')[0], account_id, product_id]
+                data = [val.get('Desc', 'test')[0], val.get('Qty', '0')[0], val.get('UnitPrice', '0')[0], account_id, product_id]
                 name = 'Invoice Line' + val.get('Id')[0]
                 line_ids.append(self.import_object(fields, data, 'account.invoice.line', 'account_invoice_line', name, False))
         return ','.join(line_ids)
@@ -526,10 +526,41 @@
     def get_account_id(self, val, field1, field2):
         account_id = self.mapped_id_if_exist('account.account', [('name', '=', self.get_value(val, 'Header', field1))], self.TABLE_ACCOUNT, self.get_value(val, 'Header', field2))
         return account_id
+    
+    def get_customer_account_id(self, vals):
+        customer_obj= self.obj.pool.get('res.partner')
+        account_db_id = self.get_mapped_id(self.TABLE_CUSTOMER,  vals.get('Header',{}).get('CustomerId')[0])
+        account_ids = customer_obj.browse(self.cr, self.uid, [account_db_id], context=None)[0]
+        income_id=account_ids.property_account_receivable or prop_ids.property_account_payable
+        account_id = self.mapped_id_if_exist('account.account',[('name', '=', income_id.name)], self.TABLE_ACCOUNT, income_id.name)
+        return account_id
+    
+    def get_invoice_account(self, vals, field1, field2):
+        product_obj =  self.obj.pool.get('product.product')
+        for val in vals.get('Line'):
+            if val.get(field1):
+                account_id = self.mapped_id_if_exist('account.account', [('name', '=', val.get(field1)[0])], self.TABLE_ACCOUNT, val.get(field2)[0])
+                return account_id
+            if val.get('ItemId'):
+                product_id = self.mapped_id_if_exist('product.product', [('name', '=', val.get('ItemName')[0])], self.TABLE_ITEM, val.get('ItemId')[0])
+                if not product_id:
+                    field = ['name','property_account_income/id']
+                    data = [val.get('ItemName')[0], self.get_account_id(vals, 'APAccountName', 'APAccountId')]
+                    self.import_object(field, data, 'product.product', self.TABLE_ITEM, val.get('ItemId')[0])
+                product_db_id = self.get_mapped_id(self.TABLE_ITEM,  val.get('ItemId')[0])
+                prop_ids = product_obj.browse(self.cr, self.uid, [product_db_id], context=None)[0]
+                income_id=prop_ids.property_account_income or prop_ids.property_account_expense
+                account_id = self.mapped_id_if_exist('account.account',[('name', '=', income_id.name)], self.TABLE_ACCOUNT, income_id.name)
+                if not account_id:
+                    return self.get_customer_account_id(vals)
+                return account_id
+            else:
+                return self.get_customer_account_id(vals)
+        return True
 
     def get_invoice_line(self, vals, field1, field2):
         if vals.get('Line'):
-            account_id = self.get_account_id(vals, field1, field2)
+            account_id = self.get_invoice_account(vals, field1, field2)
             return self.get_line(vals, account_id)
         return False
 
@@ -570,7 +601,7 @@
                     'address_contact_id/id': call(self.get_partner_address_id, 'RemitToId'),
                     'date_due': call(self.get_fieldvalue, value('Header'), 'DueDate'),
                     'comment': call(self.get_fieldvalue, value('Header'), 'Msg'),
-                    'invoice_line/id': call(self.get_invoice_line, 'ARAccountName', 'ARAccountId'),
+                    'invoice_line/id': call(self.get_invoice_line, 'AccountName', 'AccountId'),
                     'payment_term/id': self.get_payment_term,
                     'tax_line/id': self.get_tax_line,
                     'type': const('out_invoice'),
@@ -598,7 +629,7 @@
                'map': {
                         'id': 'Id',
                         'name': 'Name',        
-                      } 
+                      }
                 }
 
     def get_category(self, val, category):
@@ -729,11 +760,12 @@
                     'address_contact_id/id': call(self.get_partner_address_id, 'VendorId'),
                     'date_due': call(self.get_fieldvalue, value('Header'), 'DueDate'),
                     'comment': call(self.get_fieldvalue, value('Header'), 'Note'),
-                    'invoice_line/id': call(self.get_invoice_line, 'APAccountName', 'APAccountId'),
+                    'invoice_line/id': call(self.get_invoice_line, 'AccountName', 'AccountId'),
                     'payment_term/id': self.get_payment_term,
                     'type': const('in_invoice'),
                     }
                 }
+
     def set_purchase_order(self, val):
         partner_id = self.get_partner_id(val, 'VendorName', 'VendorId')
         partner_address_id = self.get_partner_address_id(val, 'VendorId')
@@ -746,14 +778,19 @@
         name = val.get('Id')
         self.import_object(field, dic, 'purchase.order', self.TABLE_PURCHASE, name, False)
         return val
+    
+    def get_invoice(self, val):
+        invoice_id = self.mapped_id_if_exist('account.invoice', [('amount_untaxed', '=', self.get_value(val, 'Header', 'TotalAmt'))], self.TABLE_PURCHASE_INVOICE, self.get_value(val, 'Header', 'TotalAmt'))
+        return invoice_id
 
     def get_purchase_order_mapping(self):
         return {
                 'model': 'purchase.order',
-                'dependencies': [self.TABLE_ITEM],
+                'dependencies': [self.TABLE_PURCHASE_INVOICE],
                 'map': {
                         'notes': call(self.get_fieldvalue, value('Header'), 'TotalAmt'),
                         'order_line/id': self.get_purchase_order_line,
+                        'invoice_ids/id': self.get_invoice,
                        }
                 }
         

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to