-
- 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
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"