[IMP] account: remove invoice addresss
[odoo/odoo.git] / addons / account / test / test_edi_invoice.yml
index 0285e54..b8a4d8d 100644 (file)
@@ -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
         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"