X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=addons%2Faccount%2Ftest%2Ftest_edi_invoice.yml;h=b8a4d8d4ef859ad40dc9b98735c5e46994203f76;hb=dca4facf6e6391f21221580a23a152b97c77aa05;hp=0285e541156c3ed18f38f875e9a5070be29dbc34;hpb=c17142a45bc329931bb7ba59550fcdb4d7624b0c;p=odoo%2Fodoo.git diff --git a/addons/account/test/test_edi_invoice.yml b/addons/account/test/test_edi_invoice.yml index 0285e54..b8a4d8d 100644 --- a/addons/account/test/test_edi_invoice.yml +++ b/addons/account/test/test_edi_invoice.yml @@ -1,38 +1,19 @@ - - I create a company for Customer + In order to test the EDI export features of Invoices - - !record {model: res.company, id: res_company_test11}: - name: Thomson pvt. ltd. - partner_id: 1 - rml_header: 1 - rml_header2: 1 - rml_header3: 1 - currency_id: 1 - -- - I create a partner which is a my customer -- - !record {model: res.partner, id: res_partner_test20}: - name: Junjun wala - supplier: False - company_id: res_company_test11 - opt_out: True + First I create a draft customer invoice - - I create one customer invoice -- - !record {model: account.invoice, id: customer_invoice_test}: + !record {model: account.invoice, id: invoice_edi_1}: journal_id: 1 - partner_id: res_partner_test20 + partner_id: base.res_partner_agrolait currency_id: base.EUR - address_invoice_id: base.res_partner_address_11 - company_id: res_company_test11 + company_id: 1 account_id: account.a_pay - date_invoice: '2011-06-22' + date_invoice: !eval "'%s' % (time.strftime('%Y-%m-%d'))" name: selling product type: 'out_invoice' invoice_line: - product_id: product.product_product_pc1 - partner_id: res_partner_test20 uos_id: 1 quantity: 1.0 price_unit: 10.0 @@ -40,121 +21,132 @@ account_id: account.a_pay invoice_line: - product_id: product.product_product_pc3 - partner_id: res_partner_test20 uos_id: 1 quantity: 5.0 price_unit: 100.0 name: 'Medium PC' account_id: account.a_pay - tax_line: - name: sale tax account_id: account.a_pay manual: True amount: 1000.00 - - - I Open the Invoice + I confirm and open the invoice - - !python {model: account.invoice}: | - - invoices = self.browse(cr, uid, ref("customer_invoice_test")) - import netsvc - wf_service = netsvc.LocalService("workflow") - wf_service.trg_validate(uid, 'account.invoice',invoices.id,'invoice_open', cr) - + !workflow {model: account.invoice, ref: invoice_edi_1, action: invoice_open} - - I Testing of EDI functionality. First I export customer invoice from my company than import that invoice into customer company + Then I export the customer invoice - - !python {model: ir.edi.document}: | + !python {model: edi.document}: | invoice_pool = self.pool.get('account.invoice') - invoice = invoice_pool.browse(cr, uid, ref("customer_invoice_test")) - - tokens = self.export_edi(cr, uid, [invoice]) - assert tokens, 'Token is not generated' + invoice = invoice_pool.browse(cr, uid, ref("invoice_edi_1")) + token = self.export_edi(cr, uid, [invoice]) + assert token, 'Invalid EDI Token' - - I import of EDI document of custmer invoice + Then I import a sample EDI document of another customer invoice - - !python {model: ir.edi.document}: | - invoice_pool = self.pool.get('account.invoice') + !python {model: account.invoice}: | + import time edi_document = { - "internal_number": "SAJ/2011/002", + "__id": "account:b22acf7a-ddcd-11e0-a4db-701a04e25543.random_invoice_763jsms", + "__module": "account", + "__model": "account.invoice", + "__version": [6,1,0], + "internal_number": time.strftime("SAJ/%Y/002"), "company_address": { + "__id": "base:b22acf7a-ddcd-11e0-a4db-701a04e25543.main_address", + "__module": "base", + "__model": "res.partner", "city": "Gerompont", "zip": "1367", - "__last_update": False, - "country_id": ["b22acf7a-ddcd-11e0-a4db-701a04e25543:base.be", "Belgium"], - "__id": "b22acf7a-ddcd-11e0-a4db-701a04e25543:base.main_address", + "country_id": ["base:b22acf7a-ddcd-11e0-a4db-701a04e25543.be", "Belgium"], "phone": "(+32).81.81.37.00", - "street": "Chaussee de Namur 40" + "street": "Chaussee de Namur 40", + "bank_ids": [ + ["base:b22acf7a-ddcd-11e0-a4db-701a04e25543.res_partner_bank-ZrTWzesfsdDJzGbp","Sample bank: 123465789-156113"] + ], }, - "company_id": ["b22acf7a-ddcd-11e0-a4db-701a04e25543:account.res_company_test11", "Thomson pvt. ltd."], - "currency_id": ["b22acf7a-ddcd-11e0-a4db-701a04e25543:base.EUR", "EUR (\u20ac)"], - "address_invoice_id": ["b22acf7a-ddcd-11e0-a4db-701a04e25543:base.res_partner_address_11", "Sebastien LANGE, France, Alencon, 1 place de l'\u00c9glise"], - "partner_id": ["b22acf7a-ddcd-11e0-a4db-701a04e25543:account.res_partner_test20", "Junjun wala"], - "__attachments": [], - "__module": "account", - "amount_total": 1010.0, - "date_invoice": "2011-06-22", - "amount_untaxed": 10.0, - "name": "selling product", - "__model": "account.invoice", - "__last_update": False, + "company_id": ["account:b22acf7a-ddcd-11e0-a4db-701a04e25543.res_company_test11", "Thomson pvt. ltd."], + "currency": { + "__id": "base:b22acf7a-ddcd-11e0-a4db-701a04e25543.EUR", + "__module": "base", + "__model": "res.currency", + "code": "EUR", + "symbol": "€", + }, + "partner_id": ["account:b22acf7a-ddcd-11e0-a4db-701a04e25543.res_partner_test20", "Junjun wala"], + "partner_address": { + "__id": "base:5af1272e-dd26-11e0-b65e-701a04e25543.res_partner_address_7wdsjasdjh", + "__module": "base", + "__model": "res.partner", + "phone": "(+32).81.81.37.00", + "street": "Chaussee de Namur 40", + "city": "Gerompont", + "zip": "1367", + "country_id": ["base:5af1272e-dd26-11e0-b65e-701a04e25543.be", "Belgium"], + }, + "date_invoice": time.strftime('%Y-%m-%d'), + "name": "sample invoice", "tax_line": [{ + "__id": "account:b22acf7a-ddcd-11e0-a4db-701a04e25543.account_invoice_tax-4g4EutbiEMVl", + "__module": "account", + "__model": "account.invoice.tax", "amount": 1000.0, "manual": True, - "__id": "b22acf7a-ddcd-11e0-a4db-701a04e25543:b22acf7a-ddcd-11e0-a4db-701a04e25543:account.account_invoice_tax-4g4EutbiEMVl", "name": "sale tax", - "__last_update": False }], - "__id": "b22acf7a-ddcd-11e0-a4db-701a04e25543:account.customer_invoice_test", - "amount_tax": 1000.0, - "__version": [6, 1], "type": "out_invoice", "invoice_line": [{ - "uos_id": ["b22acf7a-ddcd-11e0-a4db-701a04e25543:product.product_uom_unit", "PCE"], - "name": "basic pc", - "__last_update": False, + "__module": "account", + "__model": "account.invoice.line", + "__id": "account:b22acf7a-ddcd-11e0-a4db-701a04e25543.account_invoice_line-1RP3so", + "uos_id": ["product:b22acf7a-ddcd-11e0-a4db-701a04e25543.product_uom_unit", "PCE"], + "name": "Basic PC", "price_unit": 10.0, - "price_subtotal": 10.0, - "__id": "b22acf7a-ddcd-11e0-a4db-701a04e25543:b22acf7a-ddcd-11e0-a4db-701a04e25543:account.account_invoice_line-1RP3so-u2vV4", - "product_id": ["b22acf7a-ddcd-11e0-a4db-701a04e25543:product.product_product_pc1", "[PC1] Basic PC"], + "product_id": ["product:b22acf7a-ddcd-11e0-a4db-701a04e25543.product_product_pc1", "[PC1] Basic PC"], "quantity": 1.0 }, { - "uos_id": ["b22acf7a-ddcd-11e0-a4db-701a04e25543:product.product_uom_unit", "PCE"], - "name": "Medim PC", - "__last_update": False, + "__module": "account", + "__model": "account.invoice.line", + "__id": "account:b22acf7a-ddcd-11e0-a4db-701a04e25543.account_invoice_line-u2XV5", + "uos_id": ["product:b22acf7a-ddcd-11e0-a4db-701a04e25543.product_uom_unit", "PCE"], + "name": "Medium PC", "price_unit": 100.0, - "price_subtotal": 100.0, - "__id": "b22acf7a-ddcd-11e0-a4db-701a04e25543:b22acf7a-ddcd-11e0-a4db-701a04e25543:account.account_invoice_line-1RP3so-u2vV4", - "product_id": ["b22acf7a-ddcd-11e0-a4db-701a04e25543:product.product_product_pc3", "[PC3] Medium PC"], + "product_id": ["product:b22acf7a-ddcd-11e0-a4db-701a04e25543.product_product_pc3", "[PC3] Medium PC"], "quantity": 5.0 }] } + invoice_id = self.edi_import(cr, uid, edi_document, context=context) + assert invoice_id, 'EDI import failed' + invoice_new = self.browse(cr, uid, invoice_id) - invoice_id = invoice_pool.edi_import(cr, uid, edi_document, context=context) - invoice_new = invoice_pool.browse(cr, uid, invoice_id, context=context) - assert invoice_id, 'Invoice is not imported' -- - I Checking the out invoice become in invoice or not after import -- - !python {model: account.invoice}: | - - new_partner_id = self.pool.get('res.partner').name_search(cr, uid, "Thomson pvt. ltd.") - assert new_partner_id, 'Partner is not created of Supplier' - ids = self.search(cr, uid, [('partner_id','=',new_partner_id[0][0]),('reference','=',"SAJ/2011/002")]) - assert ids, 'Invoice does not have created of party' - invoice_new = self.browse(cr, uid, ids[0]) - assert invoice_new.reference == "SAJ/2011/002", "internal number is not stored in reference" - assert invoice_new.reference_type == 'none', "reference type is not set to 'None'" + # check bank info on partner + assert len(invoice_new.partner_id.bank_ids) == 1, "Expected 1 bank entry related to partner" + bank_info = invoice_new.partner_id.bank_ids[0] + assert bank_info.acc_number == "Sample bank: 123465789-156113", 'Expected "Sample bank: 123465789-156113", got %s' % bank_info.acc_number + + assert invoice_new.partner_id.supplier, 'Imported Partner is not marked as supplier' + assert invoice_new.reference == time.strftime("SAJ/%Y/002"), "internal number is not stored in reference" + assert invoice_new.reference_type == 'none', "reference type is not set to 'none'" assert invoice_new.internal_number == False, "internal number is not reset" assert invoice_new.journal_id.id, "journal id is not selected" - assert invoice_new.type == 'in_invoice', "Imported in voice is not supplier invoice" - product = ['Medium PC','Basic PC'] + assert invoice_new.type == 'in_invoice', "Invoice type was not set properly" + assert len(invoice_new.invoice_line) == 2, "invoice lines are not same" for inv_line in invoice_new.invoice_line: - assert inv_line.account_id.id, "account_id is not taken from product's default" - assert inv_line.product_id.name in ['Medium PC','Basic PC'], "product is not in Invoice line" + if inv_line.name == 'Basic PC': + assert inv_line.uos_id.name == "PCE" , "uom is not same" + assert inv_line.price_unit == 10 , "price unit is not same" + assert inv_line.quantity == 1 , "product qty is not same" + assert inv_line.price_subtotal == 10, "price sub total is not same" + elif inv_line.name == 'Medium PC': + assert inv_line.uos_id.name == "PCE" , "uom is not same" + assert inv_line.price_unit == 100 , "price unit is not same" + assert inv_line.quantity == 5 , "product qty is not same" + assert inv_line.price_subtotal == 500, "price sub total is not same" + else: + raise AssertionError('unknown invoice line: %s' % inv_line) for inv_tax in invoice_new.tax_line: - assert inv_tax.manual, "for tax line manual is not set to True" - assert inv_tax.account_id, "for tax_line default accounts is not picked based on the tax config of the DB where it is imported." + assert inv_tax.manual, "tax line not set to manual" + assert inv_tax.account_id, "missing tax line account"