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