odoo/addons/l10n_ch/test/l10n_ch_dta.yml

220 lines
6.9 KiB
YAML

-
In order to test DTA generation I make an invoice and create the DTA from it.
-
I create an invoice on 1st January for 7000 EUR
###########################
# Creating 1 invoice #
###########################
-
!record {model: account.invoice, id: dta_account_invoice, view: False}:
company_id: base.main_company
journal_id: account.bank_journal
currency_id: base.EUR
account_id: account.a_pay
type : in_invoice
partner_id: base.res_partner_2
reference_type: bvr
reference: 11111111111111111111
date_invoice: !eval "'%s-01-01' %(datetime.now().year)"
period_id: account.period_1
#invoice_line:
partner_bank_id: main_partner_bank
check_total : 7000
-
I add an invoice line
-
!record {model: account.invoice.line, id: dta_invoice_line, view: False}:
account_id: account.a_expense
name: '[PCSC234] PC Assemble SC234'
price_unit: 700.0
quantity: 10.0
product_id: product.product_product_3
uos_id: product.product_uom_unit
invoice_id: dta_account_invoice
-
I Validate invoice by clicking on Validate button
-
!workflow {model: account.invoice, action: invoice_open, ref: dta_account_invoice}
-
I create my payment order to pay my invoice
###########################
# Doing payment order #
###########################
-
!record {model: payment.order, id: dta_payment_order}:
#date_created
#date_done
date_prefered: due
#date_scheduled
#line_ids:
mode: l10n_ch.payment_mode_dta
#reference
state: draft
total: 7000
#user_id
-
I add a payment line to my payment order
-
!record {model: payment.line, id: dta_pay_line}:
amount: 7000
amount_currency: 7000
bank_id: l10n_ch.agro_bank
#bank_statement_line_id
communication: "11111111111111111111"
#communication2
company_currency: base.EUR
#create_date
currency: base.EUR
#date
#info_owner
#info_partner
#ml_date_created
#ml_inv_ref
#ml_maturity_date
move_line_id: !ref {model: account.move.line, search: "[('ref','=','11111111111111111111')]"}
#name (reference)
order_id: dta_payment_order
partner_id: base.res_partner_2
state: normal
-
I generate a DTA file by using the wizard "Create DTA" for my payment order
-
!python {model: create.dta.wizard}: |
import base64
wiz_id = self.create(cr, uid, {})
wiz = self.browse(cr, uid, wiz_id)
pay_order_id = ref("dta_payment_order")
#set the payment order as the active id
context['active_ids'] = [pay_order_id]
context['active_id'] = pay_order_id
result = wiz.create_dta(context=context)
assert result, "No result returned"
data = wiz.read(['dta_file'])
dta_file = base64.decodestring(data[0]['dta_file'] or '')
assert dta_file, "File is empty"
#check that file starts with 1st segment characters "01"
assert dta_file[:2] == "01", "File is not a DTA file"
payment_obj = self.pool.get('payment.order')
payment_obj.set_done(cr, uid, [ref('dta_payment_order')], context)
#force state in open state (confirmed)
payment_obj.write(cr, uid, [ref('dta_payment_order')], {'state': 'open'})
-
I check the execution date is today
-
!assert {model: payment.order, id: dta_payment_order}:
- date_done == datetime.now().date().strftime('%Y-%m-%d')
-
I check my payment order state is Confirmed
-
!assert {model: payment.order, id: dta_payment_order, string: state is done}:
- state == 'open'
-
I create a Bank Statment in order to confirm the payment line
-
!record {model: account.bank.statement, id: dta_bank_statement}:
#account_id:
#balance_end:
#balance_end_cash:
#balance_end_real:
#balance_start:
#closing_date:
#company_id:
#currency:
date: !eval "'%s-01-01' %(datetime.now().year)"
#ending_details_ids:
journal_id: account.bank_journal
#line_ids:
#move_line_ids
name: "/"
period_id: account.period_1
#starting_details_ids
state: draft
#total_entry_encoding
#user_id
#-
# I import the payment line
#-
# !python {model: account.payment.populate.statement}: |
# wiz_id = self.create(cr, uid, {})
# wiz = self.browse(cr, uid, wiz_id)
#
# line_obj = self.pool.get('payment.line')
# pay_line_ids = line_obj.search(cr, uid, [('communication','=','11111111111111111111'),('amount','=','7000')])
#
# data = { 'lines': [(6, 0, [pay_line_ids[0]])],}
# wiz.write(data)
#
# context['active_id'] = ref('dta_bank_statement')
# context['active_ids'] = [ref('dta_bank_statement')]
#
# self.populate_statement(cr, uid, [wiz_id], context=context)
#
#
#-
# I check the statement line is created
#-
# !assert {model: account.bank.statement, id: dta_bank_statement, string: statement_line_ids is not empty}:
# - line_ids
#
#-
# I check the voucher line is created
#-
# !python {model: account.bank.statement}: |
# statement = self.browse(cr, uid, ref('dta_bank_statement'))
#
# assert statement.line_ids[0].voucher_id.line_ids, "Voucher line is missing"
# assert len(statement.line_ids[0].voucher_id.line_ids) == 1, "There are too many voucher lines"
#
#-
# In order to confirm my bank statement, I enter the closing balance and press on compute button
#-
# !python {model: account.bank.statement}: |
# statement = self.browse(cr, uid, ref('dta_bank_statement'))
# statement.write({'balance_end_real': -7000.0})
# self.button_dummy(cr, uid, [ref('dta_bank_statement')], context=context)
# statement = self.browse(cr, uid, ref('dta_bank_statement'))
#
#-
# I confirm my bank statement
#-
# !python {model: account.bank.statement}: |
# self.button_confirm_bank(cr, uid, [ref('dta_bank_statement')], context=context)
#
#
#-
# I check the move lines have been defined
#-
# !assert {model: account.bank.statement, id: dta_bank_statement, string: move_line_ids is not empty}:
# - move_line_ids
#
#
#-
# I check bank statement is Closed and balance is -7000
#-
# !assert {model: account.bank.statement, id: dta_bank_statement, string: state is Closed and balance is -7000}:
# - state == 'confirm'
# - balance_end == -7000.0
#
#-
# I check the residual amount of invoice, should be 0 in residual currency and 0 in amount_residual and paid
#-
# !python {model: account.invoice}: |
# invoice_id = self.browse(cr, uid, ref("dta_account_invoice"))
# move_line_obj = self.pool.get('account.move.line')
# move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
# move_line = move_line_obj.browse(cr, uid, move_lines[0])
# assert move_line.amount_residual_currency == 0.0, "Residual amount currency is not correct : %.2f" % move_line.amount_residual_currency
# assert move_line.amount_residual == 0.0 , "Residual amount of invoice is not correct : %.2f" % move_line.amount_residual
# assert invoice_id.state == 'paid', "Invoice state is not Paid"