def setUpClass(cls): super().setUpClass() cls.partner = cls.env["res.partner"].create({ "name": "Test customer", "customer_rank": 1 }) cls.journal = cls.env["account.journal"].create({ "name": "Test journal", "type": "sale", "code": "test-sale-jorunal", "company_id": cls.env.company.id, }) cls.product = cls.env["product.product"].create({ "name": "Test product", "type": "service" }) invoice = Form(cls.env["account.move"].with_context( default_type="out_invoice", default_company_id=cls.env.company.id)) invoice.partner_id = cls.partner invoice.journal_id = cls.journal with invoice.invoice_line_ids.new() as line_form: line_form.name = cls.product.name line_form.product_id = cls.product line_form.quantity = 1.0 line_form.price_unit = 10 invoice = invoice.save() invoice.action_post() cls.invoice = invoice
def test_sale(self): so = Form(self.env["sale.order"]) so.partner_id = self.partner_a with so.order_line.new() as so_line: so_line.product_id = self.product_a so_line.product_uom_qty = 100 with so.order_line.new() as so_line: so_line.product_id = self.product_b so_line.product_uom_qty = 10 self.so = so.save() self.so.action_confirm() self.picking = self.so.picking_ids self.picking.action_assign() for move_line in self.picking.move_lines: if move_line.product_uom_qty > 0 and move_line.quantity_done == 0: move_line.write({"quantity_done": move_line.product_uom_qty}) self.picking._action_done() invoice = self.so._create_invoices() invoice = Form(invoice) invoice = invoice.save() invoice.action_post()
def create_invoice(self): AccountMove = self.env["account.move"] invoice = Form(AccountMove.with_context(default_type="in_invoice")) invoice.partner_id = self.vendor invoice.purchase_id = self.po invoice = invoice.save() invoice.action_post() _logger.info("Factura introdusa")
def test_vendor_bill_flow_anglo_saxon_2(self): """In anglo saxon accounting, receive 10@10 and invoice with the addition of 1@50 as a landed costs and create a linked landed costs record. """ self.env.company.anglo_saxon_accounting = True # Create an RFQ for self.product1, 10@10 rfq = Form(self.env['purchase.order']) rfq.partner_id = self.vendor1 with rfq.order_line.new() as po_line: po_line.product_id = self.product1 po_line.product_qty = 10 po_line.price_unit = 10 po_line.taxes_id.clear() rfq = rfq.save() rfq.button_confirm() # Process the receipt receipt = rfq.picking_ids wiz = receipt.button_validate() wiz = Form(self.env['stock.immediate.transfer'].with_context( wiz['context'])).save() wiz.process() self.assertEqual(rfq.order_line.qty_received, 10) input_aml = self._get_stock_input_move_lines()[-1] self.assertEqual(input_aml.debit, 0) self.assertEqual(input_aml.credit, 100) valuation_aml = self._get_stock_valuation_move_lines()[-1] self.assertEqual(valuation_aml.debit, 100) self.assertEqual(valuation_aml.credit, 0) # Create a vendor bill for the RFQ and add to it the landed cost vb = Form(self.env['account.move'].with_context( default_move_type='in_invoice')) vb.partner_id = self.vendor1 vb.invoice_date = vb.date with vb.invoice_line_ids.new() as inv_line: inv_line.product_id = self.productlc1 inv_line.price_unit = 50 inv_line.is_landed_costs_line = True vb = vb.save() vb.action_post() action = vb.button_create_landed_costs() lc = Form(self.env[action['res_model']].browse(action['res_id'])) lc.picking_ids.add(receipt) lc = lc.save() lc.button_validate() # Check reconciliation of input aml of lc lc_input_aml = lc.account_move_id.line_ids.filtered( lambda aml: aml.account_id == self.company_data[ 'default_account_stock_in']) self.assertTrue(len(lc_input_aml.full_reconcile_id), 1)
def create_sale_invoice(self, diff_p1=0, diff_p2=0): # invoice on order invoice = self.so._create_invoices() invoice = Form(invoice) with invoice.invoice_line_ids.edit(0) as line_form: line_form.price_unit += diff_p1 with invoice.invoice_line_ids.edit(1) as line_form: line_form.price_unit += diff_p2 invoice = invoice.save() invoice.action_post()
def create_invoice(self, diff_p1=0, diff_p2=0): invoice = Form(self.env["account.move"].with_context( default_move_type="in_invoice", default_invoice_date=fields.Date.today())) invoice.partner_id = self.vendor invoice.purchase_id = self.po with invoice.invoice_line_ids.edit(0) as line_form: line_form.price_unit += diff_p1 with invoice.invoice_line_ids.edit(1) as line_form: line_form.price_unit += diff_p2 invoice = invoice.save() invoice.action_post() _logger.info("Factura introdusa")
def test_sale(self): so = Form(self.env["sale.order"]) so.partner_id = self.partner_a with so.order_line.new() as so_line: so_line.product_id = self.product_a so_line.product_uom_qty = 100 with so.order_line.new() as so_line: so_line.product_id = self.product_b so_line.product_uom_qty = 10 self.so = so.save() self.so.action_confirm() self.picking = self.so.picking_ids self.picking.action_assign() for move_line in self.picking.move_lines: if move_line.product_uom_qty > 0 and move_line.quantity_done == 0: move_line.write({"quantity_done": move_line.product_uom_qty}) self.picking._action_done() invoice = self.so._create_invoices() invoice = Form(invoice) invoice = invoice.save() invoice.action_post() payment_register = self.env["account.payment.register"] payment_register = payment_register.with_context( active_model="account.move", active_ids=invoice.ids) payment_form = Form(payment_register) payment = payment_form.save() payment.action_create_payments() bf = self.env["account.invoice.export.bf"] bf = bf.with_context(active_model="account.move", active_id=invoice.id) bf = Form(bf).save() bf.act_getfile()
def test_vendor_bill_flow_continental_1(self): """In continental accounting, receive 10@10 and invoice. Then invoice 1@50 as a landed costs and create a linked landed costs record. """ self.env.company.anglo_saxon_accounting = False # Create an RFQ for self.product1, 10@10 rfq = Form(self.env['purchase.order']) rfq.partner_id = self.vendor1 with rfq.order_line.new() as po_line: po_line.product_id = self.product1 po_line.product_qty = 10 po_line.price_unit = 10 po_line.taxes_id.clear() rfq = rfq.save() rfq.button_confirm() # Process the receipt receipt = rfq.picking_ids wiz = receipt.button_validate() wiz = Form(self.env['stock.immediate.transfer'].with_context( wiz['context'])).save().process() self.assertEqual(rfq.order_line.qty_received, 10) input_aml = self._get_stock_input_move_lines()[-1] self.assertEqual(input_aml.debit, 0) self.assertEqual(input_aml.credit, 100) valuation_aml = self._get_stock_valuation_move_lines()[-1] self.assertEqual(valuation_aml.debit, 100) self.assertEqual(valuation_aml.credit, 0) # Create a vebdor bill for the RFQ action = rfq.action_create_invoice() vb = self.env['account.move'].browse(action['res_id']) vb.invoice_date = vb.date vb.action_post() expense_aml = self._get_expense_move_lines()[-1] self.assertEqual(expense_aml.debit, 100) self.assertEqual(expense_aml.credit, 0) payable_aml = self._get_payable_move_lines()[-1] self.assertEqual(payable_aml.debit, 0) self.assertEqual(payable_aml.credit, 100) # Create a vendor bill for a landed cost product, post it and validate a landed cost # linked to this vendor bill. LC; 1@50 lcvb = Form(self.env['account.move'].with_context( default_move_type='in_invoice')) lcvb.partner_id = self.vendor2 lcvb.invoice_date = lcvb.date with lcvb.invoice_line_ids.new() as inv_line: inv_line.product_id = self.productlc1 inv_line.price_unit = 50 inv_line.is_landed_costs_line = True with lcvb.invoice_line_ids.edit(0) as inv_line: inv_line.tax_ids.clear() lcvb = lcvb.save() lcvb.action_post() expense_aml = self._get_expense_move_lines()[-1] self.assertEqual(expense_aml.debit, 50) self.assertEqual(expense_aml.credit, 0) payable_aml = self._get_payable_move_lines()[-1] self.assertEqual(payable_aml.debit, 0) self.assertEqual(payable_aml.credit, 50) action = lcvb.button_create_landed_costs() lc = Form(self.env[action['res_model']].browse(action['res_id'])) lc.picking_ids.add(receipt) lc = lc.save() lc.button_validate() self.assertEqual(lc.cost_lines.price_unit, 50) self.assertEqual(lc.cost_lines.product_id, self.productlc1) input_aml = self._get_stock_input_move_lines()[-1] self.assertEqual(input_aml.debit, 0) self.assertEqual(input_aml.credit, 50) valuation_aml = self._get_stock_valuation_move_lines()[-1] self.assertEqual(valuation_aml.debit, 50) self.assertEqual(valuation_aml.credit, 0) self.assertEqual(self.product1.quantity_svl, 10) self.assertEqual(self.product1.value_svl, 150)