Kuldeep Joshi(OpenERP) has proposed merging 
lp:~openerp-dev/openobject-addons/trunk-import_quickbooks-customer-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-customer-kjo/+merge/70822

Change in the account parent and product line
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-import_quickbooks-customer-kjo/+merge/70822
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/trunk-import_quickbooks.
=== modified file 'import_quickbooks/quickbooks/ippids/service/services.py'
--- import_quickbooks/quickbooks/ippids/service/services.py	2011-07-04 12:42:02 +0000
+++ import_quickbooks/quickbooks/ippids/service/services.py	2011-08-09 06:29:24 +0000
@@ -164,6 +164,7 @@
 </VendorQuery>'''
 
         response = IPP._request(context, type, url, action, xml)
+        print "====----->>", response
 
         return response
 
@@ -187,3 +188,69 @@
         response = IPP._request(context, type, url, action, xml)
 
         return response
+    
+class ReceivePaymentService(import_quickbooks.quickbooks.ippids.service.abstract.AbstractService):
+
+    def list_all(self, context, realm=None):
+
+        IPP = context._IPP
+
+        if realm is None:
+            realm = context.get_realm()
+
+        type = import_quickbooks.quickbooks.ippids.IPP.REQUEST_IDS
+        url = "https://services.intuit.com/sb/receivepayment/v2/"; + str(realm)
+        action = None
+
+        xml = '''<?xml version="1.0" encoding="UTF-8"?>
+<ReceivePaymentQuery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns="http://www.intuit.com/sb/cdm/v2";>
+</ReceivePaymentQuery>'''
+
+        response = IPP._request(context, type, url, action, xml)
+        print "====>", response
+
+        return response
+    
+class SalesReceiptService(import_quickbooks.quickbooks.ippids.service.abstract.AbstractService):
+
+    def list_all(self, context, realm=None):
+
+        IPP = context._IPP
+
+        if realm is None:
+            realm = context.get_realm()
+
+        type = import_quickbooks.quickbooks.ippids.IPP.REQUEST_IDS
+        url = "https://services.intuit.com/sb/salesreceipt/v2/"; + str(realm)
+        action = None
+
+        xml = '''<?xml version="1.0" encoding="UTF-8"?>
+<SalesReceiptQuery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns="http://www.intuit.com/sb/cdm/v2";>
+</SalesReceiptQuery>'''
+
+        response = IPP._request(context, type, url, action, xml)
+
+        return response
+    
+class EstimateService(import_quickbooks.quickbooks.ippids.service.abstract.AbstractService):
+
+    def list_all(self, context, realm=None):
+
+        IPP = context._IPP
+
+        if realm is None:
+            realm = context.get_realm()
+
+        type = import_quickbooks.quickbooks.ippids.IPP.REQUEST_IDS
+        url = "https://services.intuit.com/sb/estimate/v2/"; + str(realm)
+        action = None
+
+        xml = '''<?xml version="1.0" encoding="UTF-8"?>
+<EstimateQuery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns="http://www.intuit.com/sb/cdm/v2";>
+</EstimateQuery>'''
+
+        response = IPP._request(context, type, url, action, xml)
+
+        return response
+    
+

=== modified file 'import_quickbooks/wizard/import_data_from_quickbook.py'
--- import_quickbooks/wizard/import_data_from_quickbook.py	2011-07-26 10:30:32 +0000
+++ import_quickbooks/wizard/import_data_from_quickbook.py	2011-08-09 06:29:24 +0000
@@ -36,9 +36,11 @@
     TABLE_ACCOUNT = 'Account'
     TABLE_ACCOUNT_TAX = 'ItemSalesTax'
     TABLE_ACCOUNT_PAYMENT = 'PaymentMethod'
-    TABLE_ACCOUNT_INVOICE = 'Invoice'
+    TABLE_CUSTOMER_INVOICE = 'Invoice'
     TABLE_VENDOR = 'Vendor'
     TABLE_PURCHASE = 'PurchaseOrder'
+    TABLE_CUSTOMER_PAYMENT = 'ReceivePayment'
+    TABLE_SALE_RECEIPT = 'SalesReceipt'
     TABLE_ITEM = 'Item'
     _realm_id = False
     _ticket = False
@@ -56,10 +58,12 @@
             self.TABLE_ACCOUNT: AccountService(),
             self.TABLE_ACCOUNT_TAX: AccountService(),
             self.TABLE_ACCOUNT_PAYMENT: AccountService(),
-            self.TABLE_ACCOUNT_INVOICE: InvoiceService(),
+            self.TABLE_CUSTOMER_INVOICE: InvoiceService(),
             self.TABLE_VENDOR: VendorService(),
             self.TABLE_PURCHASE: PurchaseOrderService(),
             self.TABLE_ITEM: ItemService(),
+            self.TABLE_CUSTOMER_PAYMENT: ReceivePaymentService(),
+            self.TABLE_SALE_RECEIPT: SalesReceiptService(),
         }
         return vals.get(table)
 
@@ -112,10 +116,12 @@
             self.TABLE_ACCOUNT: self.get_values('Account'),
             self.TABLE_ACCOUNT_TAX: self.get_salesTax('ItemSalesTax'),
             self.TABLE_ACCOUNT_PAYMENT: self.get_paymentTerm('PaymentMethod'),
-            self.TABLE_ACCOUNT_INVOICE: self.get_values('Invoice'),
+            self.TABLE_CUSTOMER_INVOICE: self.get_values('Invoice'),
             self.TABLE_VENDOR: self.get_values('Vendor'),
             self.TABLE_PURCHASE: self.get_values('PurchaseOrder'),
             self.TABLE_ITEM: self.get_values('Item'),
+            self.TABLE_CUSTOMER_PAYMENT: self.get_values('ReceivePayment'),
+            self.TABLE_SALE_RECEIPT: self.get_values('SalesReceipt'),
         }
         return vals.get(table)
 
@@ -125,10 +131,12 @@
             self.TABLE_ACCOUNT: self.get_account_mapping(),
             self.TABLE_ACCOUNT_TAX: self.get_account_tax_mapping(),
             self.TABLE_ACCOUNT_PAYMENT: self.get_account_payment_term_mapping(),
-            self.TABLE_ACCOUNT_INVOICE: self.get_account_invoice_mapping(),
+            self.TABLE_CUSTOMER_INVOICE: self.get_customer_invoice_mapping(),
             self.TABLE_VENDOR: self.get_vendor_mapping(),
             self.TABLE_PURCHASE: self.get_purchase_mapping(),
             self.TABLE_ITEM: self.get_item_mapping(),
+            self.TABLE_CUSTOMER_PAYMENT: self.get_customer_payment_mapping(),
+            self.TABLE_SALE_RECEIPT: self.get_sales_receipt_mapping(),
     }
 
     def get_all_states(self, external_val, country_id):
@@ -233,7 +241,7 @@
             val.update({'country_id/id': country,
                         'state_id/id': state,
                         'title/id': title,
-                        'id_new': vals.get('Id')})
+                        'id_new': add_type+vals.get('Id')})
             return self.import_object_mapping(address, val, 'res.partner.address', 'res_partner_address', val['id_new'])
 
     def get_partner_address(self, vals):
@@ -313,10 +321,20 @@
         base_account_id = self.mapped_id_if_exist('account.account', [('name', '=', 'QuickBook Account')], self.TABLE_ACCOUNT, 'id')
         return base_account_id
 
+    def not_account_type(self, val):
+        if val.get('Id') not in self.parent_type:
+            self.parent_type.append(val)
+        return True
+
     def set_account_type(self, val):
-
         if val.get('AccountParentName') and val.get('AccountParentId') not in self.parent_id:
             self.parent_id.append(val.get('AccountParentId'))
+            for i in self.parent_type:
+                if val.get('AccountParentId') == i.get('Id'):
+                    i['Type'] = 'View'
+                    return i
+        if not val.get('AccountParentName'):
+            self.not_account_type(val)
         if val.get('Id') in self.parent_id:
             val['Type'] = 'View'
             return val
@@ -375,10 +393,6 @@
                 return val.get(field1).get(field2)[0]
         return '1'
 
-    def get_account_id(self, val):
-        account_id = self.mapped_id_if_exist('account.account', [('name', '=', self.get_value(val, 'Header', 'ARAccountName'))], self.TABLE_ACCOUNT, self.get_value(val, 'Header', 'ARAccountId'))
-        return account_id
-
     def get_fieldvalue(self, val, field1, field2):
         if field1:
             if field1.get(field2):
@@ -407,42 +421,57 @@
                 line_ids.append(self.import_object(fields, data, 'account.invoice.line', 'account_invoice', name, False))
         return ','.join(line_ids)
 
+    def get_journal_id(self, val, field1, field2, field3):
+        journal_id = self.mapped_id_if_exist('account.journal', [('name', '=', field1), ('code', '=', field2)], 'account_journal', field2)
+        if not journal_id:
+            view_id = self.mapped_id_if_exist('account.journal.view', [('name', '=', 'Sale/Purchase Journal View')], 'account_journal_view', 'id')
+            sequence_id = self.mapped_id_if_exist('ir.sequence', [('name', '=', field1)], 'sequence', 'id')
+            fields = ['name', 'code', 'type', 'view_id/id', 'sequence_id/id']
+            data = [field1, field2, field3, view_id, sequence_id]
+            name = field2
+            journal_id = self.import_object(fields, data, 'account.journal', 'account_journal', name)
+        return journal_id
+
+    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_invoice_line(self, vals):
         if vals.get('Line'):
             account_id = self.mapped_id_if_exist('account.account', [('name', '=', self.get_value(vals, 'Header', 'ARAccountName'))], self.TABLE_ACCOUNT, self.get_value(vals, 'Header', 'ARAccountId'))
             return self.get_line(vals, account_id)
         return False
 
-    def get_journal_id(self, val, field1, field2, id):
-        journal_id = self.mapped_id_if_exist('account.journal', [('name', '=', field1), ('code', '=', field2)], 'account_journal', id)
-        if not journal_id:
-            view_id = self.mapped_id_if_exist('account.journal.view', [('name', '=', 'Sale/Purchase Journal View')], 'journal_id', 'id')
-            sequence_id = self.mapped_id_if_exist('ir.sequence', [('name', '=', field1)], 'sequence', 'id')
-            fields = ['name', 'code', 'type', 'view_id/id', 'sequence_id/id']
-            data = [field1, field2, 'sale', view_id, sequence_id]
-            name = 'account_journal'+id
-            return self.import_object(fields, data, 'account.journal', 'account_invoice', name, [('name', '=', field1), ('code', '=', field2)])
-
-        return journal_id
-
-    def get_account_invoice_mapping(self):
+    def get_payment_term(self, val):
+        term_id = self.mapped_id_if_exist('account.payment.term', [('name', '=', self.get_value(val, 'Header', 'SalesTermName'))], self.TABLE_ACCOUNT_PAYMENT, self.get_value(val, 'Header', 'SalesTermId'))
+        return term_id
+
+    def get_tax_line(self, val):
+        account_id = self.mapped_id_if_exist('account.account', [('name', '=', self.get_value(val, 'Header', 'ARAccountName'))], self.TABLE_ACCOUNT, self.get_value(val, 'Header', 'ARAccountId'))
+        field = ['name', 'account_id/id', 'amount']
+        data =[self.get_value(val, 'Header', 'TaxName'), account_id, self.get_value(val, 'Header', 'TaxAmt')]
+        return self.import_object(field, data, 'account.invoice.tax', 'account_invoice_tax', val.get('Id'))
+
+    def get_customer_invoice_mapping(self):
         return {
             'model': 'account.invoice',
             'dependencies': [self.TABLE_CUSTOMER, self.TABLE_ACCOUNT, self.TABLE_ITEM],
             'map': {
                     'id': 'Id',
                     'partner_id/id': call(self.get_partner_id, 'CustomerName', 'CustomerId'),
-                    'journal_id/id': call(self.get_journal_id, 'Sales Journal', 'SAJ', '17'),
-                    'account_id/id': self.get_account_id,
+                    'journal_id/id': call(self.get_journal_id, 'Sales Journal', 'SAJ', 'sale'),
+                    'account_id/id': call(self.get_account_id, 'ARAccountName', 'ARAccountId'), 
                     'address_invoice_id/id': call(self.get_partner_address_id, 'RemitToId'),
                     'date_invoice': call(self.get_fieldvalue, value('Header'), 'TxnDate'),
                     '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'), 'Note'),
+                    'comment': call(self.get_fieldvalue, value('Header'), 'Msg'),
                     'invoice_line/id': self.get_invoice_line,
+                    'payment_term/id': self.get_payment_term,
+                    'tax_line/id': self.get_tax_line,
                     'type': const('out_invoice'),
                     }
-               }
+                }
 
     def get_vendor_mapping(self):
         return {
@@ -503,7 +532,7 @@
             'map': {
                     'id': 'Id',
                     'name': 'Name',
-                    'type': map_val('Type', self.get_product_type),
+                    'type': map_val('Type', self.get_product_type, 'product'),
                     'active': 'Active',
                     'description': 'Desc',
                     'list_price': call(self.get_fieldvalue, value('UnitPrice'), 'Amount'),
@@ -536,7 +565,7 @@
             'map': {
                     'id': 'Id',
                     'partner_id/id': call(self.get_partner_id, 'VendorName', 'VendorId'),
-                    'journal_id/id': call(self.get_journal_id, 'Purchase Journal', 'EXJ', '18'),
+                    'journal_id/id': call(self.get_journal_id, 'Purchase Journal', 'EXJ', 'purchase'),
                     'account_id/id': self.purchase_account_id,
                     'address_invoice_id/id': call(self.get_partner_address_id, 'VendorId'),
                     'date_invoice': call(self.get_fieldvalue, value('Header'), 'TxnDate'),
@@ -548,6 +577,80 @@
                     }
                 }
 
+    def get_currency(self, val, field1, field2):
+        currency_id = self.mapped_id_if_exist('res.currency', [('name', '=', field1)], 'res_currency', field2)
+        return currency_id
+    
+    def get_voucher_line(self, val):
+        account_id = self.purchase_account_id
+        customer_id = self.mapped_id_if_exist('res.partner', [('name', '=', self.get_value(val, 'Header', 'VendorName'))], self.TABLE_CUSTOMER, self.get_value(val, 'Header', 'VendorId'))
+        voucher_id = self.xml_id_exist(self.TABLE_CUSTOMER_PAYMENT, val.get('Id'))
+        field = {
+            'name': 'name',
+            'account_id/id': 'account_id/id',
+            'partner_id/id': 'partner_id/id',
+            'amount': 'amount',
+            'voucher_id/id': 'voucher_id/id',
+            }
+        data = {
+            'name': self.get_value(val, 'Header', 'RemitToName'),
+            'account_id/id': account_id,
+            'partner_id/id': customer_id,
+            'amount': self.get_value(val, 'Header', 'TotalAmt'),
+            'voucher_id/id': voucher_id,
+            }
+        name = val.get('Id')
+        return self.import_object_mapping(field, data, 'account.voucher.line', 'account_voucher_line', name)
+
+    payment_state = {
+        'Payable': 'posted',
+    }
+
+    def set_customer_payment(self, val):
+        val['Type'] = val.get('Header',{}).get('Status')[0]
+        partner_id = self.get_partner_id(val, 'VendorName', 'VendorId')
+        journal_id = self.get_journal_id(val, 'Cash', 'BNK3', 'Cash')
+        amount = self.get_value(val, 'Header', 'TotalAmt')
+        date = self.get_value(val, 'Header', 'TxnDate')
+        account_id = self.purchase_account_id
+        currency_id = self.get_currency(val, 'EUR', '1')
+        field = ['partner_id/id', 'journal_id/id', 'amount', 'date', 'account_id/id','currency_id/id', 'id', 'type']
+        dic = [partner_id, journal_id, amount, date, account_id, currency_id, val.get('Id'), 'receipt']
+        name = val.get('Id')
+        self.import_object(field, dic, 'account.voucher', self.TABLE_CUSTOMER_PAYMENT, name)
+        return val
+
+    def get_customer_payment_mapping(self):
+        return {
+            'model': 'account.voucher',
+#            'dependencies': [self.TABLE_CUSTOMER_INVOICE],
+            'hook': self.set_customer_payment,
+            'map': {
+#                    'line_ids/id': self.get_voucher_line,
+                    }
+                }
+    
+    def get_sale_tax_line(self, val):
+        sale_tax_id = self.mapped_id_if_exist('account.tax', [('name' ,'=', self.get_value(val, 'Header', 'TaxName'))], self.TABLE_ACCOUNT_TAX, self.get_value(val, 'Header', 'TaxId'))
+        return sale_tax_id
+
+    def get_sales_receipt_mapping(self):
+        return {
+            'model': 'account.voucher',
+#            'dependencies': [self.TABLE_ACCOUNT, self.TABLE_CUSTOMER],
+            'map': {
+                    'id': 'Id',
+                    'partner_id/id': call(self.get_partner_id, 'CustomerName', 'CustomerId'),
+                    'journal_id/id': call(self.get_journal_id, 'Sales Journal', 'SAJ', 'sale'),
+                    'account_id/id': call(self.get_account_id, 'DepositToAccountName', 'DepositToAccountId'),
+                    'date': call(self.get_fieldvalue, value('Header'), 'TxnDate'),
+                    'tax_id/id': self.get_sale_tax_line,
+                    'tax_amount': call(self.get_value, 'Header', 'TaxAmt'),
+                    'type': const('sale'),
+                    'amount': call(self.get_value, 'Header', 'TotalAmt'),
+                    'currency_id/id': call(self.get_currency, 'EUR', '1'),
+                    }
+                }
 
 class import_quickbooks(osv.osv_memory):
 
@@ -562,9 +665,9 @@
         'vendor': fields.boolean('Vendors', help="Import vendors."),
         'item': fields.boolean('Items & Services', help="Import items."),
 #        'sale': fields.boolean('Sale Orders', help="Not implement yet.",readonly=True),
-        'account': fields.boolean('Accounts', help="Import accounts."),
-        'invoice': fields.boolean('Invoices', help="Import invoices."),
-        'purchase': fields.boolean('Purchase Orders', help="Import purchase"),
+        'account': fields.boolean('Accounts', help="Import Accounts."),
+        'invoice': fields.boolean('Invoices', help="Import Customer Invoices."),
+        'purchase': fields.boolean('Purchase Orders', help="Import Purchase Orders"),
 #        'employee': fields.boolean('Employees', help="Not implement yet.",readonly=True),
         'email': fields.char('Notify end of import to', size=64, help="Email address of the user to be notified when the import is complete."),
 
@@ -596,7 +699,6 @@
             context = {}
         tables = self._get_nodes(cr, uid, ids, context)
         login = pwd = token = relam = mail =False
-        instance = "quickbooks_demo"
         for current in self.browse(cr, uid, ids, context):
             login, pwd, token, relam = current.login, current.password, current.token, current.realm_id
             mail = current.email

_______________________________________________
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