Odoo18-Base/addons/l10n_pk/demo/account_demo.py
2025-01-06 10:57:38 +07:00

245 lines
11 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import datetime
from dateutil.relativedelta import relativedelta
from odoo import api, fields, models, Command
class AccountChartTemplate(models.AbstractModel):
_inherit = "account.chart.template"
@api.model
def _get_demo_data_move(self, company=False):
moves = super()._get_demo_data_move(company)
if company.account_fiscal_country_id.code == "PK":
sale_journal = self.env['account.journal'].search(
domain=[
*self.env['account.journal']._check_company_domain((company or self.env.company).id),
('type', '=', 'sale'),
], limit=1)
moves.update({
'l10n_pk_demo_invoice_1': {
'move_type': 'out_invoice',
'partner_id': 'l10n_pk.res_partner_punjab',
'invoice_user_id': 'base.user_demo',
'invoice_payment_term_id': 'account.account_payment_term_end_following_month',
'invoice_date': fields.Datetime.today() - relativedelta(days=1),
'journal_id': sale_journal.id,
'invoice_line_ids': [
Command.create({
'product_id': 'product.product_product_8',
'quantity': 2,
'price_unit': 40000.0,
'tax_ids': [Command.set([
'pk_sales_tax_services_10'
])],
}),
Command.create({
'product_id': 'product.product_product_9',
'quantity': 3,
'price_unit': 400.0,
'tax_ids': [Command.set([
'pk_sales_tax_services_17',
'pk_tax_wh_S_1'
])],
}),
Command.create({
'product_id': 'product.product_product_10',
'quantity': 4,
'price_unit': 300.0,
'tax_ids': [Command.set([
'pk_sales_tax_services_5'
])],
}),
],
},
'l10n_pk_demo_invoice_2': {
'move_type': 'out_invoice',
'partner_id': 'l10n_pk.res_partner_punjab',
'invoice_user_id': 'base.user_demo',
'invoice_payment_term_id': 'account.account_payment_term_end_following_month',
'invoice_date': fields.Datetime.today() - relativedelta(days=2),
'journal_id': sale_journal.id,
'invoice_line_ids': [
Command.create({
'product_id': 'product.product_product_9',
'quantity': 2,
'price_unit': 4000.0,
'tax_ids': [Command.set([
'pk_sales_tax_services_10'
])],
}),
Command.create({
'product_id': 'product.product_product_10',
'quantity': 3,
'price_unit': 300.0,
'tax_ids': [Command.set([
'pk_sales_tax_services_5'
])],
}),
],
},
'l10n_pk_demo_invoice_3': {
'move_type': 'out_invoice',
'partner_id': 'base.res_partner_3',
'invoice_user_id': 'base.user_demo',
'invoice_payment_term_id': 'account.account_payment_term_end_following_month',
'invoice_date': fields.Datetime.today() - relativedelta(days=3),
'journal_id': sale_journal.id,
'invoice_line_ids': [
Command.create({
'product_id': 'product.product_product_4',
'quantity': 10,
'price_unit': 800.0,
'tax_ids': False,
}),
]
},
'l10n_pk_demo_reconcile_1': {
'move_type': 'out_refund',
'partner_id': 'l10n_pk.res_partner_punjab',
'invoice_date': fields.Datetime.today() - relativedelta(days=1),
'delivery_date': fields.Datetime.today() - relativedelta(days=1),
'invoice_line_ids': [
Command.create({
'product_id': 'product.product_product_8',
'quantity': 2,
'price_unit': 40000.0,
'tax_ids': [Command.set([
'pk_sales_tax_services_10'
])],
}),
Command.create({
'product_id': 'product.product_product_9',
'quantity': 3,
'price_unit': 400.0,
'tax_ids': [Command.set([
'pk_sales_tax_services_10',
'pk_tax_wh_S_5'
])],
}),
Command.create({
'product_id': 'product.product_product_10',
'quantity': 4,
'price_unit': 300.0,
'tax_ids': [Command.set([
'pk_sales_tax_services_5'
])],
}),
],
},
'l10n_pk_demo_reconcile_2': {
'move_type': 'out_refund',
'partner_id': 'base.res_partner_3',
'invoice_date': fields.Datetime.today() - relativedelta(days=2),
'delivery_date': fields.Datetime.today() - relativedelta(days=2),
'invoice_line_ids': [
Command.create({
'product_id': 'product.product_product_4',
'quantity': 10,
'price_unit': 800.0,
'tax_ids': False,
}),
]
},
'l10n_pk_demo_vendor_bill_1': {
'ref': 'INV/001',
'move_type': 'in_invoice',
'partner_id': 'l10n_pk.res_partner_islamabad',
'invoice_user_id': 'base.user_demo',
'invoice_payment_term_id': 'account.account_payment_term_end_following_month',
'invoice_date': fields.Datetime.today() - relativedelta(days=1),
'invoice_line_ids': [
Command.create({
'product_id': 'product.consu_delivery_01',
'quantity': 1,
'price_unit': 1000.0,
'tax_ids': [Command.set([
'pk_sales_tax_services_15'
])],
}),
Command.create({
'product_id': 'product.consu_delivery_03',
'quantity': 1,
'price_unit': 2000.0,
'tax_ids': [Command.set([
'pk_sales_tax_services_10',
'pk_tax_wh_S_1'
])],
}),
]
},
'l10n_pk_demo_vendor_bill_2': {
'ref': 'INV/002',
'move_type': 'in_invoice',
'partner_id': 'l10n_pk.res_partner_islamabad',
'invoice_user_id': 'base.user_demo',
'invoice_payment_term_id': 'account.account_payment_term_end_following_month',
'invoice_date': fields.Datetime.today() - relativedelta(days=2),
'invoice_line_ids': [
Command.create({
'product_id': 'product.product_product_8',
'quantity': 4,
'price_unit': 1000.0,
'tax_ids': [Command.set([
'pk_sales_tax_17'
])],
}),
Command.create({
'product_id': 'product.product_product_7',
'quantity': 3,
'price_unit': 2000.0,
'tax_ids': [Command.set([
'pk_sales_tax_services_10'
])],
}),
]
},
'l10n_pk_demo_vendor_bill_3': {
'ref': 'INV/003',
'move_type': 'in_invoice',
'partner_id': 'l10n_pk.res_partner_islamabad',
'invoice_user_id': 'base.user_demo',
'invoice_payment_term_id': 'account.account_payment_term_end_following_month',
'invoice_date': fields.Datetime.today() - relativedelta(days=3),
'invoice_line_ids': [
Command.create({
'product_id': 'product.product_product_9',
'quantity': 1,
'price_unit': 1000.0,
'tax_ids': [Command.set([
'pk_sales_tax_services_17'
])],
}),
Command.create({
'product_id': 'product.product_product_10',
'quantity': 1,
'price_unit': 2000.0,
'tax_ids': [Command.set([
'pk_sales_tax_services_10',
'pk_tax_wh_S_5'
])],
}),
]
},
})
return moves
def _post_load_demo_data(self, company=False):
company = company or self.env.company
if company.account_fiscal_country_id.code == "PK":
invoices = (
self.ref('l10n_pk_demo_invoice_1')
+ self.ref('l10n_pk_demo_invoice_2')
+ self.ref('l10n_pk_demo_invoice_3')
+ self.ref('l10n_pk_demo_reconcile_1')
+ self.ref('l10n_pk_demo_reconcile_2')
+ self.ref('l10n_pk_demo_vendor_bill_1')
+ self.ref('l10n_pk_demo_vendor_bill_2')
+ self.ref('l10n_pk_demo_vendor_bill_3')
)
for move in invoices:
move.action_post()
return super()._post_load_demo_data(company)