mirror of
https://github.com/bringout/oca-financial.git
synced 2026-04-18 03:22:06 +02:00
Initial commit: OCA Financial packages (186 packages)
This commit is contained in:
commit
3e0e8473fb
8757 changed files with 947473 additions and 0 deletions
232
README.md
Normal file
232
README.md
Normal file
|
|
@ -0,0 +1,232 @@
|
|||
# OCA Financial
|
||||
|
||||
This repository contains **186** OCA packages for financial.
|
||||
|
||||
## Packages Included (186 packages)
|
||||
|
||||
- **odoo-bringout-oca-account-analytic-account_analytic_account_tag** - From account: analytic_account_analytic_account_tag
|
||||
- **odoo-bringout-oca-account-analytic-account_analytic_distribution_manual** - From account: analytic_account_analytic_distribution_manual
|
||||
- **odoo-bringout-oca-account-analytic-account_analytic_document_date** - From account: analytic_account_analytic_document_date
|
||||
- **odoo-bringout-oca-account-analytic-account_analytic_organization** - From account: analytic_account_analytic_organization
|
||||
- **odoo-bringout-oca-account-analytic-account_analytic_parent** - From account: analytic_account_analytic_parent
|
||||
- **odoo-bringout-oca-account-analytic-account_analytic_required** - From account: analytic_account_analytic_required
|
||||
- **odoo-bringout-oca-account-analytic-account_analytic_root** - From account: analytic_account_analytic_root
|
||||
- **odoo-bringout-oca-account-analytic-account_analytic_sequence** - From account: analytic_account_analytic_sequence
|
||||
- **odoo-bringout-oca-account-analytic-account_analytic_tag** - From account: analytic_account_analytic_tag
|
||||
- **odoo-bringout-oca-account-analytic-account_analytic_tag_distribution** - From account: analytic_account_analytic_tag_distribution
|
||||
- **odoo-bringout-oca-account-analytic-account_move_update_analytic** - From account: analytic_account_move_update_analytic
|
||||
- **odoo-bringout-oca-account-analytic-analytic_base_department** - From account: analytic_analytic_base_department
|
||||
- **odoo-bringout-oca-account-analytic-analytic_distribution_widget_remove_save** - From account: analytic_analytic_distribution_widget_remove_save
|
||||
- **odoo-bringout-oca-account-analytic-analytic_hr_department_restriction** - From account: analytic_analytic_hr_department_restriction
|
||||
- **odoo-bringout-oca-account-analytic-analytic_mixin_analytic_account** - From account: analytic_analytic_mixin_analytic_account
|
||||
- **odoo-bringout-oca-account-analytic-analytic_partner** - From account: analytic_analytic_partner
|
||||
- **odoo-bringout-oca-account-analytic-crm_claim_analytic** - From account: analytic_crm_claim_analytic
|
||||
- **odoo-bringout-oca-account-analytic-hr_department_analytic** - From account: analytic_hr_department_analytic
|
||||
- **odoo-bringout-oca-account-analytic-hr_expense_analytic_tag** - From account: analytic_hr_expense_analytic_tag
|
||||
- **odoo-bringout-oca-account-analytic-hr_timesheet_analytic_tag** - From account: analytic_hr_timesheet_analytic_tag
|
||||
- **odoo-bringout-oca-account-analytic-mrp_stock_analytic** - From account: analytic_mrp_stock_analytic
|
||||
- **odoo-bringout-oca-account-analytic-pos_analytic_by_config** - From account: analytic_pos_analytic_by_config
|
||||
- **odoo-bringout-oca-account-analytic-product_analytic** - From account: analytic_product_analytic
|
||||
- **odoo-bringout-oca-account-analytic-product_analytic_purchase** - From account: analytic_product_analytic_purchase
|
||||
- **odoo-bringout-oca-account-analytic-product_analytic_sale** - From account: analytic_product_analytic_sale
|
||||
- **odoo-bringout-oca-account-analytic-purchase_analytic** - From account: analytic_purchase_analytic
|
||||
- **odoo-bringout-oca-account-analytic-purchase_analytic_tag** - From account: analytic_purchase_analytic_tag
|
||||
- **odoo-bringout-oca-account-analytic-purchase_stock_analytic** - From account: analytic_purchase_stock_analytic
|
||||
- **odoo-bringout-oca-account-analytic-sale_analytic_tag** - From account: analytic_sale_analytic_tag
|
||||
- **odoo-bringout-oca-account-analytic-stock_analytic** - From account: analytic_stock_analytic
|
||||
- **odoo-bringout-oca-account-analytic-stock_landed_costs_analytic** - From account: analytic_stock_landed_costs_analytic
|
||||
- **odoo-bringout-oca-account-analytic-stock_picking_analytic** - From account: analytic_stock_picking_analytic
|
||||
- **odoo-bringout-oca-account-financial-reporting-account_financial_report** - From account: financial_reporting_account_financial_report
|
||||
- **odoo-bringout-oca-account-financial-reporting-account_financial_report_sale** - From account: financial_reporting_account_financial_report_sale
|
||||
- **odoo-bringout-oca-account-financial-reporting-account_liquidity_forecast** - From account: financial_reporting_account_liquidity_forecast
|
||||
- **odoo-bringout-oca-account-financial-reporting-account_purchase_stock_report_non_billed** - From account: financial_reporting_account_purchase_stock_report_non_billed
|
||||
- **odoo-bringout-oca-account-financial-reporting-account_sale_stock_report_non_billed** - From account: financial_reporting_account_sale_stock_report_non_billed
|
||||
- **odoo-bringout-oca-account-financial-reporting-account_tax_balance** - From account: financial_reporting_account_tax_balance
|
||||
- **odoo-bringout-oca-account-financial-reporting-mis_builder_cash_flow** - From account: financial_reporting_mis_builder_cash_flow
|
||||
- **odoo-bringout-oca-account-financial-reporting-mis_template_financial_report** - From account: financial_reporting_mis_template_financial_report
|
||||
- **odoo-bringout-oca-account-financial-reporting-partner_statement** - From account: financial_reporting_partner_statement
|
||||
- **odoo-bringout-oca-account-financial-tools-account_account_tag_code** - From account: financial_tools_account_account_tag_code
|
||||
- **odoo-bringout-oca-account-financial-tools-account_asset_batch_compute** - From account: financial_tools_account_asset_batch_compute
|
||||
- **odoo-bringout-oca-account-financial-tools-account_asset_low_value** - From account: financial_tools_account_asset_low_value
|
||||
- **odoo-bringout-oca-account-financial-tools-account_asset_management** - From account: financial_tools_account_asset_management
|
||||
- **odoo-bringout-oca-account-financial-tools-account_asset_management_stock_lot** - From account: financial_tools_account_asset_management_stock_lot
|
||||
- **odoo-bringout-oca-account-financial-tools-account_asset_number** - From account: financial_tools_account_asset_number
|
||||
- **odoo-bringout-oca-account-financial-tools-account_asset_transfer** - From account: financial_tools_account_asset_transfer
|
||||
- **odoo-bringout-oca-account-financial-tools-account_bank_statement_chatter** - From account: financial_tools_account_bank_statement_chatter
|
||||
- **odoo-bringout-oca-account-financial-tools-account_cash_deposit** - From account: financial_tools_account_cash_deposit
|
||||
- **odoo-bringout-oca-account-financial-tools-account_chart_update** - From account: financial_tools_account_chart_update
|
||||
- **odoo-bringout-oca-account-financial-tools-account_chart_update_l10n_eu_oss_oca** - From account: financial_tools_account_chart_update_l10n_eu_oss_oca
|
||||
- **odoo-bringout-oca-account-financial-tools-account_chart_update_multilang** - From account: financial_tools_account_chart_update_multilang
|
||||
- **odoo-bringout-oca-account-financial-tools-account_dashboard_banner** - From account: financial_tools_account_dashboard_banner
|
||||
- **odoo-bringout-oca-account-financial-tools-account_fiscal_month** - From account: financial_tools_account_fiscal_month
|
||||
- **odoo-bringout-oca-account-financial-tools-account_fiscal_position_vat_check** - From account: financial_tools_account_fiscal_position_vat_check
|
||||
- **odoo-bringout-oca-account-financial-tools-account_fiscal_year** - From account: financial_tools_account_fiscal_year
|
||||
- **odoo-bringout-oca-account-financial-tools-account_fiscal_year_auto_create** - From account: financial_tools_account_fiscal_year_auto_create
|
||||
- **odoo-bringout-oca-account-financial-tools-account_invoice_constraint_chronology** - From account: financial_tools_account_invoice_constraint_chronology
|
||||
- **odoo-bringout-oca-account-financial-tools-account_journal_general_sequence** - From account: financial_tools_account_journal_general_sequence
|
||||
- **odoo-bringout-oca-account-financial-tools-account_journal_lock_date** - From account: financial_tools_account_journal_lock_date
|
||||
- **odoo-bringout-oca-account-financial-tools-account_journal_restrict_mode** - From account: financial_tools_account_journal_restrict_mode
|
||||
- **odoo-bringout-oca-account-financial-tools-account_loan** - From account: financial_tools_account_loan
|
||||
- **odoo-bringout-oca-account-financial-tools-account_lock_date_update** - From account: financial_tools_account_lock_date_update
|
||||
- **odoo-bringout-oca-account-financial-tools-account_lock_to_date** - From account: financial_tools_account_lock_to_date
|
||||
- **odoo-bringout-oca-account-financial-tools-account_move_budget** - From account: financial_tools_account_move_budget
|
||||
- **odoo-bringout-oca-account-financial-tools-account_move_fiscal_month** - From account: financial_tools_account_move_fiscal_month
|
||||
- **odoo-bringout-oca-account-financial-tools-account_move_fiscal_year** - From account: financial_tools_account_move_fiscal_year
|
||||
- **odoo-bringout-oca-account-financial-tools-account_move_line_check_number** - From account: financial_tools_account_move_line_check_number
|
||||
- **odoo-bringout-oca-account-financial-tools-account_move_line_landed_cost_info** - From account: financial_tools_account_move_line_landed_cost_info
|
||||
- **odoo-bringout-oca-account-financial-tools-account_move_line_purchase_info** - From account: financial_tools_account_move_line_purchase_info
|
||||
- **odoo-bringout-oca-account-financial-tools-account_move_line_repair_info** - From account: financial_tools_account_move_line_repair_info
|
||||
- **odoo-bringout-oca-account-financial-tools-account_move_line_sale_info** - From account: financial_tools_account_move_line_sale_info
|
||||
- **odoo-bringout-oca-account-financial-tools-account_move_line_tax_editable** - From account: financial_tools_account_move_line_tax_editable
|
||||
- **odoo-bringout-oca-account-financial-tools-account_move_name_sequence** - From account: financial_tools_account_move_name_sequence
|
||||
- **odoo-bringout-oca-account-financial-tools-account_move_post_date_user** - From account: financial_tools_account_move_post_date_user
|
||||
- **odoo-bringout-oca-account-financial-tools-account_move_print** - From account: financial_tools_account_move_print
|
||||
- **odoo-bringout-oca-account-financial-tools-account_move_template** - From account: financial_tools_account_move_template
|
||||
- **odoo-bringout-oca-account-financial-tools-account_move_transfer_partner** - From account: financial_tools_account_move_transfer_partner
|
||||
- **odoo-bringout-oca-account-financial-tools-account_netting** - From account: financial_tools_account_netting
|
||||
- **odoo-bringout-oca-account-financial-tools-account_partner_required** - From account: financial_tools_account_partner_required
|
||||
- **odoo-bringout-oca-account-financial-tools-account_sequence_option** - From account: financial_tools_account_sequence_option
|
||||
- **odoo-bringout-oca-account-financial-tools-account_spread_cost_revenue** - From account: financial_tools_account_spread_cost_revenue
|
||||
- **odoo-bringout-oca-account-financial-tools-account_template_active** - From account: financial_tools_account_template_active
|
||||
- **odoo-bringout-oca-account-financial-tools-account_usability** - From account: financial_tools_account_usability
|
||||
- **odoo-bringout-oca-account-financial-tools-base_vat_optional_vies** - From account: financial_tools_base_vat_optional_vies
|
||||
- **odoo-bringout-oca-account-financial-tools-stock_account_anglo_saxon_cogs_kit** - From account: financial_tools_stock_account_anglo_saxon_cogs_kit
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_avatax_exemption** - From account: fiscal_rule_account_avatax_exemption
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_avatax_exemption_base** - From account: fiscal_rule_account_avatax_exemption_base
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_avatax_oca** - From account: fiscal_rule_account_avatax_oca
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_avatax_oca_log** - From account: fiscal_rule_account_avatax_oca_log
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_avatax_repair_oca** - From account: fiscal_rule_account_avatax_repair_oca
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_avatax_sale_oca** - From account: fiscal_rule_account_avatax_sale_oca
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_avatax_website_sale** - From account: fiscal_rule_account_avatax_website_sale
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_ecotax** - From account: fiscal_rule_account_ecotax
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_ecotax_sale** - From account: fiscal_rule_account_ecotax_sale
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_ecotax_sale_tax** - From account: fiscal_rule_account_ecotax_sale_tax
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_ecotax_tax** - From account: fiscal_rule_account_ecotax_tax
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_fiscal_position_autodetect_optional_vies** - From account: fiscal_rule_account_fiscal_position_autodetect_optional_vies
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_fiscal_position_partner_type** - From account: fiscal_rule_account_fiscal_position_partner_type
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_fiscal_position_type** - From account: fiscal_rule_account_fiscal_position_type
|
||||
- **odoo-bringout-oca-account-fiscal-rule-account_product_fiscal_classification** - From account: fiscal_rule_account_product_fiscal_classification
|
||||
- **odoo-bringout-oca-account-fiscal-rule-l10n_eu_oss_oca** - From account: fiscal_rule_l10n_eu_oss_oca
|
||||
- **odoo-bringout-oca-account-invoicing-account_billing** - From account: invoicing_account_billing
|
||||
- **odoo-bringout-oca-account-invoicing-account_global_discount** - From account: invoicing_account_global_discount
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_alternate_payer** - From account: invoicing_account_invoice_alternate_payer
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_block_payment** - From account: invoicing_account_invoice_block_payment
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_blocking** - From account: invoicing_account_invoice_blocking
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_change_currency** - From account: invoicing_account_invoice_change_currency
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_check_picking_date** - From account: invoicing_account_invoice_check_picking_date
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_check_total** - From account: invoicing_account_invoice_check_total
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_clearing** - From account: invoicing_account_invoice_clearing
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_crm_tag** - From account: invoicing_account_invoice_crm_tag
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_currency_taxes** - From account: invoicing_account_invoice_currency_taxes
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_customer_no_autofollow** - From account: invoicing_account_invoice_customer_no_autofollow
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_date_due** - From account: invoicing_account_invoice_date_due
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_default_code_column** - From account: invoicing_account_invoice_default_code_column
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_discount_date** - From account: invoicing_account_invoice_discount_date
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_discount_display_amount** - From account: invoicing_account_invoice_discount_display_amount
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_fiscal_position_update** - From account: invoicing_account_invoice_fiscal_position_update
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_fixed_discount** - From account: invoicing_account_invoice_fixed_discount
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_force_number** - From account: invoicing_account_invoice_force_number
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_google_document_ai** - From account: invoicing_account_invoice_google_document_ai
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_line_default_account** - From account: invoicing_account_invoice_line_default_account
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_mass_sending** - From account: invoicing_account_invoice_mass_sending
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_merge** - From account: invoicing_account_invoice_merge
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_partner_reference** - From account: invoicing_account_invoice_partner_reference
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_payment_retention** - From account: invoicing_account_invoice_payment_retention
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_payment_term_date_due** - From account: invoicing_account_invoice_payment_term_date_due
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_pricelist** - From account: invoicing_account_invoice_pricelist
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_pricelist_sale** - From account: invoicing_account_invoice_pricelist_sale
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_recipient_bank_currency** - From account: invoicing_account_invoice_recipient_bank_currency
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_refund_code** - From account: invoicing_account_invoice_refund_code
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_refund_line_selection** - From account: invoicing_account_invoice_refund_line_selection
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_refund_link** - From account: invoicing_account_invoice_refund_link
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_refund_reason** - From account: invoicing_account_invoice_refund_reason
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_refund_reason_skip_anglo_saxon** - From account: invoicing_account_invoice_refund_reason_skip_anglo_saxon
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_refund_reinvoice** - From account: invoicing_account_invoice_refund_reinvoice
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_section_sale_order** - From account: invoicing_account_invoice_section_sale_order
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_show_currency_rate** - From account: invoicing_account_invoice_show_currency_rate
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_supplier_ref_unique** - From account: invoicing_account_invoice_supplier_ref_unique
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_supplier_self_invoice** - From account: invoicing_account_invoice_supplier_self_invoice
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_supplierinfo_update** - From account: invoicing_account_invoice_supplierinfo_update
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_supplierinfo_update_discount** - From account: invoicing_account_invoice_supplierinfo_update_discount
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_supplierinfo_update_triple_discount** - From account: invoicing_account_invoice_supplierinfo_update_triple_discount
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_tax_note** - From account: invoicing_account_invoice_tax_note
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_tax_required** - From account: invoicing_account_invoice_tax_required
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_transmit_method** - From account: invoicing_account_invoice_transmit_method
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_tree_currency** - From account: invoicing_account_invoice_tree_currency
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_triple_discount** - From account: invoicing_account_invoice_triple_discount
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_validation_queued** - From account: invoicing_account_invoice_validation_queued
|
||||
- **odoo-bringout-oca-account-invoicing-account_invoice_warn_message** - From account: invoicing_account_invoice_warn_message
|
||||
- **odoo-bringout-oca-account-invoicing-account_mail_autosubscribe** - From account: invoicing_account_mail_autosubscribe
|
||||
- **odoo-bringout-oca-account-invoicing-account_menu_invoice_refund** - From account: invoicing_account_menu_invoice_refund
|
||||
- **odoo-bringout-oca-account-invoicing-account_move_auto_post_ref** - From account: invoicing_account_move_auto_post_ref
|
||||
- **odoo-bringout-oca-account-invoicing-account_move_cancel_confirm** - From account: invoicing_account_move_cancel_confirm
|
||||
- **odoo-bringout-oca-account-invoicing-account_move_sent_usability** - From account: invoicing_account_move_sent_usability
|
||||
- **odoo-bringout-oca-account-invoicing-account_move_substate** - From account: invoicing_account_move_substate
|
||||
- **odoo-bringout-oca-account-invoicing-account_move_tier_validation** - From account: invoicing_account_move_tier_validation
|
||||
- **odoo-bringout-oca-account-invoicing-account_receipt_journal** - From account: invoicing_account_receipt_journal
|
||||
- **odoo-bringout-oca-account-invoicing-account_receipt_send** - From account: invoicing_account_receipt_send
|
||||
- **odoo-bringout-oca-account-invoicing-account_tax_change** - From account: invoicing_account_tax_change
|
||||
- **odoo-bringout-oca-account-invoicing-account_tax_group_widget_base_amount** - From account: invoicing_account_tax_group_widget_base_amount
|
||||
- **odoo-bringout-oca-account-invoicing-account_tax_one_vat** - From account: invoicing_account_tax_one_vat
|
||||
- **odoo-bringout-oca-account-invoicing-account_tax_one_vat_purchase** - From account: invoicing_account_tax_one_vat_purchase
|
||||
- **odoo-bringout-oca-account-invoicing-account_tax_one_vat_sale** - From account: invoicing_account_tax_one_vat_sale
|
||||
- **odoo-bringout-oca-account-invoicing-partner_invoicing_mode** - From account: invoicing_partner_invoicing_mode
|
||||
- **odoo-bringout-oca-account-invoicing-partner_invoicing_mode_at_shipping** - From account: invoicing_partner_invoicing_mode_at_shipping
|
||||
- **odoo-bringout-oca-account-invoicing-partner_invoicing_mode_monthly** - From account: invoicing_partner_invoicing_mode_monthly
|
||||
- **odoo-bringout-oca-account-invoicing-partner_last_invoice_date** - From account: invoicing_partner_last_invoice_date
|
||||
- **odoo-bringout-oca-account-invoicing-portal_account_personal_data_only** - From account: invoicing_portal_account_personal_data_only
|
||||
- **odoo-bringout-oca-account-invoicing-product_form_account_move_line_link** - From account: invoicing_product_form_account_move_line_link
|
||||
- **odoo-bringout-oca-account-invoicing-purchase_invoicing_no_zero_line** - From account: invoicing_purchase_invoicing_no_zero_line
|
||||
- **odoo-bringout-oca-account-invoicing-purchase_stock_picking_return_invoicing** - From account: invoicing_purchase_stock_picking_return_invoicing
|
||||
- **odoo-bringout-oca-account-invoicing-sale_credit_note_reversal** - From account: invoicing_sale_credit_note_reversal
|
||||
- **odoo-bringout-oca-account-invoicing-sale_invoicing_date_selection** - From account: invoicing_sale_invoicing_date_selection
|
||||
- **odoo-bringout-oca-account-invoicing-sale_line_refund_to_invoice_qty** - From account: invoicing_sale_line_refund_to_invoice_qty
|
||||
- **odoo-bringout-oca-account-invoicing-sale_line_refund_to_invoice_qty_skip_anglo_saxon** - From account: invoicing_sale_line_refund_to_invoice_qty_skip_anglo_saxon
|
||||
- **odoo-bringout-oca-account-invoicing-sale_order_invoicing_grouping_criteria** - From account: invoicing_sale_order_invoicing_grouping_criteria
|
||||
- **odoo-bringout-oca-account-invoicing-sale_order_invoicing_qty_percentage** - From account: invoicing_sale_order_invoicing_qty_percentage
|
||||
- **odoo-bringout-oca-account-invoicing-sale_order_invoicing_queued** - From account: invoicing_sale_order_invoicing_queued
|
||||
- **odoo-bringout-oca-account-invoicing-sale_stock_picking_invoicing** - From account: invoicing_sale_stock_picking_invoicing
|
||||
- **odoo-bringout-oca-account-invoicing-sale_timesheet_invoice_description** - From account: invoicing_sale_timesheet_invoice_description
|
||||
- **odoo-bringout-oca-account-invoicing-stock_account_move_reset_to_draft** - From account: invoicing_stock_account_move_reset_to_draft
|
||||
- **odoo-bringout-oca-account-invoicing-stock_picking_invoicing** - From account: invoicing_stock_picking_invoicing
|
||||
- **odoo-bringout-oca-account-invoicing-stock_picking_return_refund_option** - From account: invoicing_stock_picking_return_refund_option
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
Install any package from this category:
|
||||
|
||||
```bash
|
||||
# Install from local directory
|
||||
pip install packages/oca-financial/PACKAGE_NAME/
|
||||
|
||||
# Install in development mode
|
||||
pip install -e packages/oca-financial/PACKAGE_NAME/
|
||||
|
||||
# Using uv (recommended for speed)
|
||||
uv add packages/oca-financial/PACKAGE_NAME/
|
||||
```
|
||||
|
||||
## Repository Structure
|
||||
|
||||
Each package in this repository follows the standard Odoo addon structure:
|
||||
|
||||
```
|
||||
oca-financial/
|
||||
├── odoo-bringout-oca-PROJECT-ADDON/
|
||||
│ ├── ADDON_NAME/ # Complete addon code
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── __manifest__.py
|
||||
│ │ └── ... (models, views, etc.)
|
||||
│ ├── pyproject.toml # Python package configuration
|
||||
│ └── README.md # Package documentation
|
||||
└── ...
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
These packages are maintained as part of the [OCA (Odoo Community Association)](https://github.com/OCA) ecosystem.
|
||||
|
||||
## License
|
||||
|
||||
Each package maintains its original license as specified in the OCA repositories.
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# Account Analytic Account Tag
|
||||
|
||||
Odoo addon: account_analytic_account_tag
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-oca-account-analytic-account_analytic_account_tag
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
- account_analytic_tag
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: Account Analytic Account Tag
|
||||
- **Version**: 16.0.1.0.0
|
||||
- **Category**: N/A
|
||||
- **License**: AGPL-3
|
||||
- **Installable**: True
|
||||
|
||||
## Source
|
||||
|
||||
Based on [OCA/account-analytic](https://github.com/OCA/account-analytic) branch 16.0, addon `account_analytic_account_tag`.
|
||||
|
||||
## License
|
||||
|
||||
This package maintains the original AGPL-3 license from the upstream Odoo project.
|
||||
|
||||
## Documentation
|
||||
|
||||
- Overview: doc/OVERVIEW.md
|
||||
- Architecture: doc/ARCHITECTURE.md
|
||||
- Models: doc/MODELS.md
|
||||
- Controllers: doc/CONTROLLERS.md
|
||||
- Wizards: doc/WIZARDS.md
|
||||
- Install: doc/INSTALL.md
|
||||
- Usage: doc/USAGE.md
|
||||
- Configuration: doc/CONFIGURATION.md
|
||||
- Dependencies: doc/DEPENDENCIES.md
|
||||
- Troubleshooting: doc/TROUBLESHOOTING.md
|
||||
- FAQ: doc/FAQ.md
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
============================
|
||||
Account Analytic Account Tag
|
||||
============================
|
||||
|
||||
..
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! source digest: sha256:a387007a3590635b12f916c01e59807fea8245a93bce16f7f5536414315aab98
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
||||
:target: https://odoo-community.org/page/development-status
|
||||
:alt: Beta
|
||||
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
|
||||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||
:alt: License: AGPL-3
|
||||
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--analytic-lightgray.png?logo=github
|
||||
:target: https://github.com/OCA/account-analytic/tree/16.0/account_analytic_account_tag
|
||||
:alt: OCA/account-analytic
|
||||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
||||
:target: https://translation.odoo-community.org/projects/account-analytic-16-0/account-analytic-16-0-account_analytic_account_tag
|
||||
:alt: Translate me on Weblate
|
||||
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
|
||||
:target: https://runboat.odoo-community.org/builds?repo=OCA/account-analytic&target_branch=16.0
|
||||
:alt: Try me on Runboat
|
||||
|
||||
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||
|
||||
The goal of this module is to restore the Analytic Tags fields (`tag_ids`) on the
|
||||
Analytic Account (`account.analytic.account`) model that was present until Odoo 11.
|
||||
|
||||
It allows to classify analytic accounts according to different categories.
|
||||
|
||||
**Table of contents**
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
Bug Tracker
|
||||
===========
|
||||
|
||||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-analytic/issues>`_.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
||||
`feedback <https://github.com/OCA/account-analytic/issues/new?body=module:%20account_analytic_account_tag%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
|
||||
Do not contact contributors directly about support or help with technical issues.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Authors
|
||||
~~~~~~~
|
||||
|
||||
* ACSONE SA/NV
|
||||
|
||||
Contributors
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* Hughes Damry <hughes.damry@acsone.eu>
|
||||
|
||||
Maintainers
|
||||
~~~~~~~~~~~
|
||||
|
||||
This module is maintained by the OCA.
|
||||
|
||||
.. image:: https://odoo-community.org/logo.png
|
||||
:alt: Odoo Community Association
|
||||
:target: https://odoo-community.org
|
||||
|
||||
OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||
mission is to support the collaborative development of Odoo features and
|
||||
promote its widespread use.
|
||||
|
||||
This module is part of the `OCA/account-analytic <https://github.com/OCA/account-analytic/tree/16.0/account_analytic_account_tag>`_ project on GitHub.
|
||||
|
||||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
||||
|
|
@ -0,0 +1 @@
|
|||
from . import models
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# Copyright 2023 ACSONE SA/NV
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
{
|
||||
"name": "Account Analytic Account Tag",
|
||||
"summary": """Restore the tag_ids in account.analytic.account""",
|
||||
"version": "16.0.1.0.0",
|
||||
"license": "AGPL-3",
|
||||
"author": "ACSONE SA/NV, Odoo Community Association (OCA)",
|
||||
"website": "https://github.com/OCA/account-analytic",
|
||||
"depends": ["account_analytic_tag"],
|
||||
"data": ["views/account_analytic_account_views.xml"],
|
||||
"demo": [],
|
||||
"installable": True,
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_analytic_account_tag
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_analytic_account_tag
|
||||
#: model:ir.model,name:account_analytic_account_tag.model_account_analytic_account
|
||||
msgid "Analytic Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_account_tag
|
||||
#: model:ir.model.fields,field_description:account_analytic_account_tag.field_account_analytic_account__tag_ids
|
||||
msgid "Tags"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_analytic_account_tag
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_analytic_account_tag
|
||||
#: model:ir.model,name:account_analytic_account_tag.model_account_analytic_account
|
||||
msgid "Analytic Account"
|
||||
msgstr "Analitički konto"
|
||||
|
||||
#. module: account_analytic_account_tag
|
||||
#: model:ir.model.fields,field_description:account_analytic_account_tag.field_account_analytic_account__tag_ids
|
||||
msgid "Tags"
|
||||
msgstr "Oznake"
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_analytic_account_tag
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-17 08:02+0000\n"
|
||||
"PO-Revision-Date: 2023-08-17 08:02+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_analytic_account_tag
|
||||
#: model:ir.model,name:account_analytic_account_tag.model_account_analytic_account
|
||||
msgid "Analytic Account"
|
||||
msgstr "Compte analytique"
|
||||
|
||||
#. module: account_analytic_account_tag
|
||||
#: model:ir.model.fields,field_description:account_analytic_account_tag.field_account_analytic_account__tag_ids
|
||||
msgid "Tags"
|
||||
msgstr "Éiquettes"
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_analytic_account_tag
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2024-02-22 13:34+0000\n"
|
||||
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.17\n"
|
||||
|
||||
#. module: account_analytic_account_tag
|
||||
#: model:ir.model,name:account_analytic_account_tag.model_account_analytic_account
|
||||
msgid "Analytic Account"
|
||||
msgstr "Conto analitico"
|
||||
|
||||
#. module: account_analytic_account_tag
|
||||
#: model:ir.model.fields,field_description:account_analytic_account_tag.field_account_analytic_account__tag_ids
|
||||
msgid "Tags"
|
||||
msgstr "Etichette"
|
||||
|
|
@ -0,0 +1 @@
|
|||
from . import account_analytic_account
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
# Copyright 2023 ACSONE SA/NV
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class AccountAnalyticAccount(models.Model):
|
||||
_inherit = ["account.analytic.account"]
|
||||
|
||||
tag_ids = fields.Many2many(
|
||||
"account.analytic.tag",
|
||||
"account_analytic_account_tag_rel",
|
||||
"account_id",
|
||||
"tag_id",
|
||||
string="Tags",
|
||||
copy=True,
|
||||
)
|
||||
|
|
@ -0,0 +1 @@
|
|||
* Hughes Damry <hughes.damry@acsone.eu>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
The goal of this module is to restore the Analytic Tags fields (`tag_ids`) on the
|
||||
Analytic Account (`account.analytic.account`) model that was present until Odoo 11.
|
||||
|
||||
It allows to classify analytic accounts according to different categories.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
|
|
@ -0,0 +1,423 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
|
||||
<title>Account Analytic Account Tag</title>
|
||||
<style type="text/css">
|
||||
|
||||
/*
|
||||
:Author: David Goodger (goodger@python.org)
|
||||
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
|
||||
:Copyright: This stylesheet has been placed in the public domain.
|
||||
|
||||
Default cascading style sheet for the HTML output of Docutils.
|
||||
|
||||
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
|
||||
customize this style sheet.
|
||||
*/
|
||||
|
||||
/* used to remove borders from tables and images */
|
||||
.borderless, table.borderless td, table.borderless th {
|
||||
border: 0 }
|
||||
|
||||
table.borderless td, table.borderless th {
|
||||
/* Override padding for "table.docutils td" with "! important".
|
||||
The right padding separates the table cells. */
|
||||
padding: 0 0.5em 0 0 ! important }
|
||||
|
||||
.first {
|
||||
/* Override more specific margin styles with "! important". */
|
||||
margin-top: 0 ! important }
|
||||
|
||||
.last, .with-subtitle {
|
||||
margin-bottom: 0 ! important }
|
||||
|
||||
.hidden {
|
||||
display: none }
|
||||
|
||||
.subscript {
|
||||
vertical-align: sub;
|
||||
font-size: smaller }
|
||||
|
||||
.superscript {
|
||||
vertical-align: super;
|
||||
font-size: smaller }
|
||||
|
||||
a.toc-backref {
|
||||
text-decoration: none ;
|
||||
color: black }
|
||||
|
||||
blockquote.epigraph {
|
||||
margin: 2em 5em ; }
|
||||
|
||||
dl.docutils dd {
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Uncomment (and remove this text!) to get bold-faced definition list terms
|
||||
dl.docutils dt {
|
||||
font-weight: bold }
|
||||
*/
|
||||
|
||||
div.abstract {
|
||||
margin: 2em 5em }
|
||||
|
||||
div.abstract p.topic-title {
|
||||
font-weight: bold ;
|
||||
text-align: center }
|
||||
|
||||
div.admonition, div.attention, div.caution, div.danger, div.error,
|
||||
div.hint, div.important, div.note, div.tip, div.warning {
|
||||
margin: 2em ;
|
||||
border: medium outset ;
|
||||
padding: 1em }
|
||||
|
||||
div.admonition p.admonition-title, div.hint p.admonition-title,
|
||||
div.important p.admonition-title, div.note p.admonition-title,
|
||||
div.tip p.admonition-title {
|
||||
font-weight: bold ;
|
||||
font-family: sans-serif }
|
||||
|
||||
div.attention p.admonition-title, div.caution p.admonition-title,
|
||||
div.danger p.admonition-title, div.error p.admonition-title,
|
||||
div.warning p.admonition-title, .code .error {
|
||||
color: red ;
|
||||
font-weight: bold ;
|
||||
font-family: sans-serif }
|
||||
|
||||
/* Uncomment (and remove this text!) to get reduced vertical space in
|
||||
compound paragraphs.
|
||||
div.compound .compound-first, div.compound .compound-middle {
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
div.compound .compound-last, div.compound .compound-middle {
|
||||
margin-top: 0.5em }
|
||||
*/
|
||||
|
||||
div.dedication {
|
||||
margin: 2em 5em ;
|
||||
text-align: center ;
|
||||
font-style: italic }
|
||||
|
||||
div.dedication p.topic-title {
|
||||
font-weight: bold ;
|
||||
font-style: normal }
|
||||
|
||||
div.figure {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
div.footer, div.header {
|
||||
clear: both;
|
||||
font-size: smaller }
|
||||
|
||||
div.line-block {
|
||||
display: block ;
|
||||
margin-top: 1em ;
|
||||
margin-bottom: 1em }
|
||||
|
||||
div.line-block div.line-block {
|
||||
margin-top: 0 ;
|
||||
margin-bottom: 0 ;
|
||||
margin-left: 1.5em }
|
||||
|
||||
div.sidebar {
|
||||
margin: 0 0 0.5em 1em ;
|
||||
border: medium outset ;
|
||||
padding: 1em ;
|
||||
background-color: #ffffee ;
|
||||
width: 40% ;
|
||||
float: right ;
|
||||
clear: right }
|
||||
|
||||
div.sidebar p.rubric {
|
||||
font-family: sans-serif ;
|
||||
font-size: medium }
|
||||
|
||||
div.system-messages {
|
||||
margin: 5em }
|
||||
|
||||
div.system-messages h1 {
|
||||
color: red }
|
||||
|
||||
div.system-message {
|
||||
border: medium outset ;
|
||||
padding: 1em }
|
||||
|
||||
div.system-message p.system-message-title {
|
||||
color: red ;
|
||||
font-weight: bold }
|
||||
|
||||
div.topic {
|
||||
margin: 2em }
|
||||
|
||||
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
|
||||
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
|
||||
margin-top: 0.4em }
|
||||
|
||||
h1.title {
|
||||
text-align: center }
|
||||
|
||||
h2.subtitle {
|
||||
text-align: center }
|
||||
|
||||
hr.docutils {
|
||||
width: 75% }
|
||||
|
||||
img.align-left, .figure.align-left, object.align-left, table.align-left {
|
||||
clear: left ;
|
||||
float: left ;
|
||||
margin-right: 1em }
|
||||
|
||||
img.align-right, .figure.align-right, object.align-right, table.align-right {
|
||||
clear: right ;
|
||||
float: right ;
|
||||
margin-left: 1em }
|
||||
|
||||
img.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.align-center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left }
|
||||
|
||||
.align-center {
|
||||
clear: both ;
|
||||
text-align: center }
|
||||
|
||||
.align-right {
|
||||
text-align: right }
|
||||
|
||||
/* reset inner alignment in figures */
|
||||
div.align-right {
|
||||
text-align: inherit }
|
||||
|
||||
/* div.align-center * { */
|
||||
/* text-align: left } */
|
||||
|
||||
.align-top {
|
||||
vertical-align: top }
|
||||
|
||||
.align-middle {
|
||||
vertical-align: middle }
|
||||
|
||||
.align-bottom {
|
||||
vertical-align: bottom }
|
||||
|
||||
ol.simple, ul.simple {
|
||||
margin-bottom: 1em }
|
||||
|
||||
ol.arabic {
|
||||
list-style: decimal }
|
||||
|
||||
ol.loweralpha {
|
||||
list-style: lower-alpha }
|
||||
|
||||
ol.upperalpha {
|
||||
list-style: upper-alpha }
|
||||
|
||||
ol.lowerroman {
|
||||
list-style: lower-roman }
|
||||
|
||||
ol.upperroman {
|
||||
list-style: upper-roman }
|
||||
|
||||
p.attribution {
|
||||
text-align: right ;
|
||||
margin-left: 50% }
|
||||
|
||||
p.caption {
|
||||
font-style: italic }
|
||||
|
||||
p.credits {
|
||||
font-style: italic ;
|
||||
font-size: smaller }
|
||||
|
||||
p.label {
|
||||
white-space: nowrap }
|
||||
|
||||
p.rubric {
|
||||
font-weight: bold ;
|
||||
font-size: larger ;
|
||||
color: maroon ;
|
||||
text-align: center }
|
||||
|
||||
p.sidebar-title {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold ;
|
||||
font-size: larger }
|
||||
|
||||
p.sidebar-subtitle {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold }
|
||||
|
||||
p.topic-title {
|
||||
font-weight: bold }
|
||||
|
||||
pre.address {
|
||||
margin-bottom: 0 ;
|
||||
margin-top: 0 ;
|
||||
font: inherit }
|
||||
|
||||
pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
pre.code .ln { color: grey; } /* line numbers */
|
||||
pre.code, code { background-color: #eeeeee }
|
||||
pre.code .comment, code .comment { color: #5C6576 }
|
||||
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
||||
pre.code .literal.string, code .literal.string { color: #0C5404 }
|
||||
pre.code .name.builtin, code .name.builtin { color: #352B84 }
|
||||
pre.code .deleted, code .deleted { background-color: #DEB0A1}
|
||||
pre.code .inserted, code .inserted { background-color: #A3D289}
|
||||
|
||||
span.classifier {
|
||||
font-family: sans-serif ;
|
||||
font-style: oblique }
|
||||
|
||||
span.classifier-delimiter {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold }
|
||||
|
||||
span.interpreted {
|
||||
font-family: sans-serif }
|
||||
|
||||
span.option {
|
||||
white-space: nowrap }
|
||||
|
||||
span.pre {
|
||||
white-space: pre }
|
||||
|
||||
span.problematic {
|
||||
color: red }
|
||||
|
||||
span.section-subtitle {
|
||||
/* font-size relative to parent (h1..h6 element) */
|
||||
font-size: 80% }
|
||||
|
||||
table.citation {
|
||||
border-left: solid 1px gray;
|
||||
margin-left: 1px }
|
||||
|
||||
table.docinfo {
|
||||
margin: 2em 4em }
|
||||
|
||||
table.docutils {
|
||||
margin-top: 0.5em ;
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
table.footnote {
|
||||
border-left: solid 1px black;
|
||||
margin-left: 1px }
|
||||
|
||||
table.docutils td, table.docutils th,
|
||||
table.docinfo td, table.docinfo th {
|
||||
padding-left: 0.5em ;
|
||||
padding-right: 0.5em ;
|
||||
vertical-align: top }
|
||||
|
||||
table.docutils th.field-name, table.docinfo th.docinfo-name {
|
||||
font-weight: bold ;
|
||||
text-align: left ;
|
||||
white-space: nowrap ;
|
||||
padding-left: 0 }
|
||||
|
||||
/* "booktabs" style (no vertical lines) */
|
||||
table.docutils.booktabs {
|
||||
border: 0px;
|
||||
border-top: 2px solid;
|
||||
border-bottom: 2px solid;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table.docutils.booktabs * {
|
||||
border: 0px;
|
||||
}
|
||||
table.docutils.booktabs th {
|
||||
border-bottom: thin solid;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
|
||||
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
|
||||
font-size: 100% }
|
||||
|
||||
ul.auto-toc {
|
||||
list-style-type: none }
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="document" id="account-analytic-account-tag">
|
||||
<h1 class="title">Account Analytic Account Tag</h1>
|
||||
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! source digest: sha256:a387007a3590635b12f916c01e59807fea8245a93bce16f7f5536414315aab98
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/account-analytic/tree/16.0/account_analytic_account_tag"><img alt="OCA/account-analytic" src="https://img.shields.io/badge/github-OCA%2Faccount--analytic-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-analytic-16-0/account-analytic-16-0-account_analytic_account_tag"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/account-analytic&target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
||||
<p>The goal of this module is to restore the Analytic Tags fields (<cite>tag_ids</cite>) on the
|
||||
Analytic Account (<cite>account.analytic.account</cite>) model that was present until Odoo 11.</p>
|
||||
<p>It allows to classify analytic accounts according to different categories.</p>
|
||||
<p><strong>Table of contents</strong></p>
|
||||
<div class="contents local topic" id="contents">
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-1">Bug Tracker</a></li>
|
||||
<li><a class="reference internal" href="#credits" id="toc-entry-2">Credits</a><ul>
|
||||
<li><a class="reference internal" href="#authors" id="toc-entry-3">Authors</a></li>
|
||||
<li><a class="reference internal" href="#contributors" id="toc-entry-4">Contributors</a></li>
|
||||
<li><a class="reference internal" href="#maintainers" id="toc-entry-5">Maintainers</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="bug-tracker">
|
||||
<h1><a class="toc-backref" href="#toc-entry-1">Bug Tracker</a></h1>
|
||||
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-analytic/issues">GitHub Issues</a>.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
||||
<a class="reference external" href="https://github.com/OCA/account-analytic/issues/new?body=module:%20account_analytic_account_tag%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
|
||||
<p>Do not contact contributors directly about support or help with technical issues.</p>
|
||||
</div>
|
||||
<div class="section" id="credits">
|
||||
<h1><a class="toc-backref" href="#toc-entry-2">Credits</a></h1>
|
||||
<div class="section" id="authors">
|
||||
<h2><a class="toc-backref" href="#toc-entry-3">Authors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>ACSONE SA/NV</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="contributors">
|
||||
<h2><a class="toc-backref" href="#toc-entry-4">Contributors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Hughes Damry <<a class="reference external" href="mailto:hughes.damry@acsone.eu">hughes.damry@acsone.eu</a>></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="maintainers">
|
||||
<h2><a class="toc-backref" href="#toc-entry-5">Maintainers</a></h2>
|
||||
<p>This module is maintained by the OCA.</p>
|
||||
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
|
||||
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||
mission is to support the collaborative development of Odoo features and
|
||||
promote its widespread use.</p>
|
||||
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-analytic/tree/16.0/account_analytic_account_tag">OCA/account-analytic</a> project on GitHub.</p>
|
||||
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!-- Copyright 2023 Acsone SA/NV
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
|
||||
<odoo>
|
||||
<record model="ir.ui.view" id="view_account_analytic_account_form">
|
||||
<field
|
||||
name="name"
|
||||
>account.analytic.account.form (in account_analytic_account_tag)</field>
|
||||
<field name="model">account.analytic.account</field>
|
||||
<field name="inherit_id" ref="analytic.view_account_analytic_account_form" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="plan_id" position="after">
|
||||
<field name="id" invisible="1" />
|
||||
<field
|
||||
name="tag_ids"
|
||||
widget="many2many_tags"
|
||||
options="{'color_field': 'color'}"
|
||||
domain="['|', ('account_analytic_id', '=', False),('account_analytic_id', '=', id)]"
|
||||
/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="account_analytic_account_tree_inherit_tag">
|
||||
<field
|
||||
name="name"
|
||||
>account.analytic.account.tree (in account_analytic_account_tag)</field>
|
||||
<field name="model">account.analytic.account</field>
|
||||
<field name="inherit_id" ref="analytic.view_account_analytic_account_list" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="plan_id" position="after">
|
||||
<field
|
||||
name="tag_ids"
|
||||
widget="many2many_tags"
|
||||
options="{'color_field': 'color'}"
|
||||
/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_account_analytic_account_search" model="ir.ui.view">
|
||||
<field
|
||||
name="name"
|
||||
>account.analytic.account.search (in account_analytic_account_tag)</field>
|
||||
<field name="model">account.analytic.account</field>
|
||||
<field name="inherit_id" ref="analytic.view_account_analytic_account_search" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="partner_id" position="before">
|
||||
<field name="tag_ids" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
# Architecture
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
U[Users] -->|HTTP| V[Views and QWeb Templates]
|
||||
V --> C[Controllers]
|
||||
V --> W[Wizards – Transient Models]
|
||||
C --> M[Models and ORM]
|
||||
W --> M
|
||||
M --> R[Reports]
|
||||
DX[Data XML] --> M
|
||||
S[Security – ACLs and Groups] -. enforces .-> M
|
||||
|
||||
subgraph Account_analytic_account_tag Module - account_analytic_account_tag
|
||||
direction LR
|
||||
M:::layer
|
||||
W:::layer
|
||||
C:::layer
|
||||
V:::layer
|
||||
R:::layer
|
||||
S:::layer
|
||||
DX:::layer
|
||||
end
|
||||
|
||||
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
|
||||
```
|
||||
|
||||
Notes
|
||||
- Views include tree/form/kanban templates and report templates.
|
||||
- Controllers provide website/portal routes when present.
|
||||
- Wizards are UI flows implemented with `models.TransientModel`.
|
||||
- Data XML loads data/demo records; Security defines groups and access.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Configuration
|
||||
|
||||
Refer to Odoo settings for account_analytic_account_tag. Configure related models, access rights, and options as needed.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Controllers
|
||||
|
||||
This module does not define custom HTTP controllers.
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Dependencies
|
||||
|
||||
This addon depends on:
|
||||
|
||||
- [account_analytic_tag](../../odoo-bringout-oca-account-analytic-account_analytic_tag)
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
# FAQ
|
||||
|
||||
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
|
||||
- Q: How to enable? A: Start server with --addon account_analytic_account_tag or install in UI.
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Install
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-oca-account-analytic-account_analytic_account_tag"
|
||||
# or
|
||||
uv pip install odoo-bringout-oca-account-analytic-account_analytic_account_tag"
|
||||
```
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# Models
|
||||
|
||||
Detected core models and extensions in account_analytic_account_tag.
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
```
|
||||
|
||||
Notes
|
||||
- Classes show model technical names; fields omitted for brevity.
|
||||
- Items listed under _inherit are extensions of existing models.
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Overview
|
||||
|
||||
Packaged Odoo addon: account_analytic_account_tag. Provides features documented in upstream Odoo 16 under this addon.
|
||||
|
||||
- Source: OCA/OCB 16.0, addon account_analytic_account_tag
|
||||
- License: LGPL-3
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Reports
|
||||
|
||||
This module does not define custom reports.
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
# Security
|
||||
|
||||
This module does not define custom security rules or access controls beyond Odoo defaults.
|
||||
|
||||
Default Odoo security applies:
|
||||
- Base user access through standard groups
|
||||
- Model access inherited from dependencies
|
||||
- No custom row-level security rules
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Troubleshooting
|
||||
|
||||
- Ensure Python and Odoo environment matches repo guidance.
|
||||
- Check database connectivity and logs if startup fails.
|
||||
- Validate that dependent addons listed in DEPENDENCIES.md are installed.
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Usage
|
||||
|
||||
Start Odoo including this addon (from repo root):
|
||||
|
||||
```bash
|
||||
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon account_analytic_account_tag
|
||||
```
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Wizards
|
||||
|
||||
This module does not include UI wizards.
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
[project]
|
||||
name = "odoo-bringout-oca-account-analytic-account_analytic_account_tag"
|
||||
version = "16.0.0"
|
||||
description = "Account Analytic Account Tag - Restore the tag_ids in account.analytic.account"
|
||||
authors = [
|
||||
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
|
||||
]
|
||||
dependencies = [
|
||||
"odoo-bringout-oca-account-analytic-account_analytic_tag>=16.0.0",
|
||||
"requests>=2.25.1"
|
||||
]
|
||||
readme = "README.md"
|
||||
requires-python = ">= 3.11"
|
||||
classifiers = [
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Intended Audience :: Developers",
|
||||
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Topic :: Office/Business",
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
homepage = "https://github.com/bringout/0"
|
||||
repository = "https://github.com/bringout/0"
|
||||
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[tool.hatch.metadata]
|
||||
allow-direct-references = true
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["account_analytic_account_tag"]
|
||||
|
||||
[tool.rye]
|
||||
managed = true
|
||||
dev-dependencies = [
|
||||
"pytest>=8.4.1",
|
||||
]
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# Account analytic distribution manual
|
||||
|
||||
Odoo addon: account_analytic_distribution_manual
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-oca-account-analytic-account_analytic_distribution_manual
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
- account
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: Account analytic distribution manual
|
||||
- **Version**: 16.0.2.4.2
|
||||
- **Category**: N/A
|
||||
- **License**: AGPL-3
|
||||
- **Installable**: True
|
||||
|
||||
## Source
|
||||
|
||||
Based on [OCA/account-analytic](https://github.com/OCA/account-analytic) branch 16.0, addon `account_analytic_distribution_manual`.
|
||||
|
||||
## License
|
||||
|
||||
This package maintains the original AGPL-3 license from the upstream Odoo project.
|
||||
|
||||
## Documentation
|
||||
|
||||
- Overview: doc/OVERVIEW.md
|
||||
- Architecture: doc/ARCHITECTURE.md
|
||||
- Models: doc/MODELS.md
|
||||
- Controllers: doc/CONTROLLERS.md
|
||||
- Wizards: doc/WIZARDS.md
|
||||
- Install: doc/INSTALL.md
|
||||
- Usage: doc/USAGE.md
|
||||
- Configuration: doc/CONFIGURATION.md
|
||||
- Dependencies: doc/DEPENDENCIES.md
|
||||
- Troubleshooting: doc/TROUBLESHOOTING.md
|
||||
- FAQ: doc/FAQ.md
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
====================================
|
||||
Account analytic distribution manual
|
||||
====================================
|
||||
|
||||
..
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! source digest: sha256:035507f0c4c09d8c7596c84710ffd03222bf8cb98b278245b67f1c6c88069ee9
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
||||
:target: https://odoo-community.org/page/development-status
|
||||
:alt: Beta
|
||||
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
|
||||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||
:alt: License: AGPL-3
|
||||
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--analytic-lightgray.png?logo=github
|
||||
:target: https://github.com/OCA/account-analytic/tree/16.0/account_analytic_distribution_manual
|
||||
:alt: OCA/account-analytic
|
||||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
||||
:target: https://translation.odoo-community.org/projects/account-analytic-16-0/account-analytic-16-0-account_analytic_distribution_manual
|
||||
:alt: Translate me on Weblate
|
||||
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
|
||||
:target: https://runboat.odoo-community.org/builds?repo=OCA/account-analytic&target_branch=16.0
|
||||
:alt: Try me on Runboat
|
||||
|
||||
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||
|
||||
This module provides an easy way to quickly autocomplete analytic accounts on any model that has a field for analytic accounts.
|
||||
|
||||
**Table of contents**
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
#. Go to Invoicing > Configuration > Analytic Accounting > Manual Analytic Distributions
|
||||
#. Create or edit the necessary records.
|
||||
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
#. Go to Invoicing > Customer > Invoices
|
||||
#. Open or create a invoice
|
||||
#. On the invoice line, select the analytic account. A new field labeled "Manual Distribution" should appear at the top.
|
||||
#. Select a record from the list, and it will be added to the distribution and the invoice lines.
|
||||
|
||||
Known issues / Roadmap
|
||||
======================
|
||||
|
||||
Compatibility with `Analytic Distribution Models` to use Manual Distribution as Default values
|
||||
|
||||
Bug Tracker
|
||||
===========
|
||||
|
||||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-analytic/issues>`_.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
||||
`feedback <https://github.com/OCA/account-analytic/issues/new?body=module:%20account_analytic_distribution_manual%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
|
||||
Do not contact contributors directly about support or help with technical issues.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Authors
|
||||
~~~~~~~
|
||||
|
||||
* Tecnativa
|
||||
|
||||
Contributors
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* Tecnativa (https://www.tecnativa.com):
|
||||
|
||||
* Carlos Lopez
|
||||
|
||||
Maintainers
|
||||
~~~~~~~~~~~
|
||||
|
||||
This module is maintained by the OCA.
|
||||
|
||||
.. image:: https://odoo-community.org/logo.png
|
||||
:alt: Odoo Community Association
|
||||
:target: https://odoo-community.org
|
||||
|
||||
OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||
mission is to support the collaborative development of Odoo features and
|
||||
promote its widespread use.
|
||||
|
||||
This module is part of the `OCA/account-analytic <https://github.com/OCA/account-analytic/tree/16.0/account_analytic_distribution_manual>`_ project on GitHub.
|
||||
|
||||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Copyright 2024 Tecnativa - Carlos Lopez
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
from . import models
|
||||
from . import reports
|
||||
from .hooks import post_init_hook
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
# Copyright 2024 Tecnativa - Carlos Lopez
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
{
|
||||
"name": "Account analytic distribution manual",
|
||||
"summary": "Account analytic distribution manual",
|
||||
"version": "16.0.2.4.2",
|
||||
"license": "AGPL-3",
|
||||
"website": "https://github.com/OCA/account-analytic",
|
||||
"author": "Tecnativa, Odoo Community Association (OCA)",
|
||||
"depends": ["account"],
|
||||
"data": [
|
||||
"security/analytic_security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"views/account_analytic_distribution_manual_views.xml",
|
||||
"views/account_analytic_line_views.xml",
|
||||
],
|
||||
"assets": {
|
||||
"web.assets_backend": [
|
||||
"account_analytic_distribution_manual/static/src/components/**/*",
|
||||
],
|
||||
"web.assets_tests": [
|
||||
"account_analytic_distribution_manual/static/src/tests/tours/**/*",
|
||||
],
|
||||
},
|
||||
"installable": True,
|
||||
"post_init_hook": "post_init_hook",
|
||||
}
|
||||
|
|
@ -0,0 +1,196 @@
|
|||
# Copyright 2024 Tecnativa - Carlos Lopez
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import SUPERUSER_ID, api, tools
|
||||
|
||||
# metadata for all models related to account_analytic_tag(m2m)
|
||||
# add more models if needed
|
||||
RELATION_M2M_INFO = {
|
||||
"account_analytic_tag_account_asset_profile_rel": {
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "account_analytic_tag_id",
|
||||
"table2": "account_asset_profile",
|
||||
"column2": "account_asset_profile_id",
|
||||
},
|
||||
"account_analytic_tag_hr_expense_rel": {
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "account_analytic_tag_id",
|
||||
"table2": "hr_expense",
|
||||
"column2": "hr_expense_id",
|
||||
},
|
||||
"account_reconcile_model_second_analytic_tag_rel": {
|
||||
"table2": "account_reconcile_model",
|
||||
"column2": "account_reconcile_model_id",
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "account_analytic_tag_id",
|
||||
},
|
||||
"hr_timesheet_switch_line_tag_rel": {
|
||||
"table2": "hr_timesheet_switch",
|
||||
"column2": "line_id",
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "tag_id",
|
||||
},
|
||||
"account_analytic_tag_sale_order_line_rel": {
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "account_analytic_tag_id",
|
||||
"table2": "sale_order_line",
|
||||
"column2": "sale_order_line_id",
|
||||
},
|
||||
"account_reconcile_model_analytic_tag_rel": {
|
||||
"table2": "account_reconcile_model_line",
|
||||
"column2": "account_reconcile_model_line_id",
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "account_analytic_tag_id",
|
||||
},
|
||||
"account_analytic_tag_mis_report_instance_rel": {
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "account_analytic_tag_id",
|
||||
"table2": "mis_report_instance",
|
||||
"column2": "mis_report_instance_id",
|
||||
},
|
||||
"account_analytic_tag_account_move_line_rel": {
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "account_analytic_tag_id",
|
||||
"table2": "account_move_line",
|
||||
"column2": "account_move_line_id",
|
||||
},
|
||||
"account_analytic_tag_mis_report_instance_period_rel": {
|
||||
"table2": "mis_report_instance_period",
|
||||
"column2": "mis_report_instance_period_id",
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "account_analytic_tag_id",
|
||||
},
|
||||
"account_analytic_tag_general_ledger_report_wizard_rel": {
|
||||
"table2": "general_ledger_report_wizard",
|
||||
"column2": "general_ledger_report_wizard_id",
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "account_analytic_tag_id",
|
||||
},
|
||||
"account_analytic_default_account_analytic_tag_rel": {
|
||||
"table2": "account_analytic_default",
|
||||
"column2": "account_analytic_default_id",
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "account_analytic_tag_id",
|
||||
},
|
||||
"account_analytic_tag_purchase_order_line_rel": {
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "account_analytic_tag_id",
|
||||
"table2": "purchase_order_line",
|
||||
"column2": "purchase_order_line_id",
|
||||
},
|
||||
"account_analytic_tag_account_asset_rel": {
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "account_analytic_tag_id",
|
||||
"table2": "account_asset",
|
||||
"column2": "account_asset_id",
|
||||
},
|
||||
"account_analytic_tag_project_task_stock_rel": {
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "account_analytic_tag_id",
|
||||
"table2": "project_task",
|
||||
"column2": "project_task_id",
|
||||
},
|
||||
"account_analytic_tag_project_task_rel": {
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "account_analytic_tag_id",
|
||||
"table2": "project_task",
|
||||
"column2": "project_task_id",
|
||||
},
|
||||
"account_analytic_line_tag_rel": {
|
||||
"table2": "account_analytic_line",
|
||||
"column2": "line_id",
|
||||
"table1": "account_analytic_tag",
|
||||
"column1": "tag_id",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def post_init_hook(cr, registry):
|
||||
if tools.table_exists(cr, "account_analytic_tag"):
|
||||
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||
DistributionManual = env["account.analytic.distribution.manual"]
|
||||
sql = """
|
||||
WITH counted_tags AS (
|
||||
SELECT
|
||||
tag.id,
|
||||
tag.name,
|
||||
tag.active,
|
||||
tag.company_id,
|
||||
ROW_NUMBER() OVER (PARTITION BY tag.name ORDER BY tag.id) AS row_count
|
||||
FROM account_analytic_tag tag
|
||||
WHERE tag.active_analytic_distribution = true
|
||||
)
|
||||
SELECT
|
||||
CASE
|
||||
WHEN row_count = 1 THEN tag.name
|
||||
ELSE CONCAT(tag.name, ' (', tag.id, ')')
|
||||
END AS name,
|
||||
tag.id,
|
||||
tag.active,
|
||||
tag.company_id,
|
||||
distribution.account_id,
|
||||
distribution.percentage
|
||||
FROM
|
||||
counted_tags tag
|
||||
INNER JOIN
|
||||
account_analytic_distribution distribution ON tag.id = distribution.tag_id;
|
||||
|
||||
"""
|
||||
env.cr.execute(sql)
|
||||
distribution_by_tag = {}
|
||||
for data in env.cr.dictfetchall():
|
||||
tag_key = (data["id"], data["name"], data["active"], data["company_id"])
|
||||
distribution_by_tag.setdefault(tag_key, []).append(data)
|
||||
distribution_map = {}
|
||||
all_tag_ids = []
|
||||
for tag_key, distributions in distribution_by_tag.items():
|
||||
tag_id, tag_name, tag_active, company_id = tag_key
|
||||
distribution_manual_val = {
|
||||
"name": tag_name,
|
||||
"active": tag_active,
|
||||
"company_id": company_id or env.company.id,
|
||||
"analytic_distribution": {
|
||||
distribution["account_id"]: distribution["percentage"]
|
||||
for distribution in distributions
|
||||
},
|
||||
}
|
||||
new_distribution = DistributionManual.create(distribution_manual_val)
|
||||
distribution_map[tag_id] = new_distribution
|
||||
all_tag_ids.append(tag_id)
|
||||
# Update references in all models related to account_analytic_tag(m2m)
|
||||
for table_m2m, info in RELATION_M2M_INFO.items():
|
||||
column1 = info["column1"]
|
||||
table2 = info["table2"]
|
||||
column2 = info["column2"]
|
||||
res_model_name = table2.replace("_", ".")
|
||||
if (
|
||||
res_model_name in env
|
||||
and "manual_distribution_id" in env[res_model_name]._fields
|
||||
and all_tag_ids
|
||||
):
|
||||
sql = f"""
|
||||
SELECT {column1}, {column2}
|
||||
FROM {table_m2m}
|
||||
WHERE {column1} IN %s
|
||||
"""
|
||||
env.cr.execute(sql, (tuple(all_tag_ids),))
|
||||
for tag_id, res_id in env.cr.fetchall():
|
||||
env.cr.execute(
|
||||
f"""
|
||||
UPDATE {table2}
|
||||
SET manual_distribution_id = %s
|
||||
WHERE id = %s
|
||||
""",
|
||||
(distribution_map[tag_id].id, res_id),
|
||||
)
|
||||
# Define the value of manual_distribution_id in the line items
|
||||
env.cr.execute(
|
||||
"""
|
||||
UPDATE account_analytic_line AS aal
|
||||
SET manual_distribution_id = aml.manual_distribution_id
|
||||
FROM account_move_line AS aml
|
||||
WHERE aal.move_line_id = aml.id
|
||||
AND aml.manual_distribution_id IS NOT NULL
|
||||
AND aal.manual_distribution_id IS NULL
|
||||
""",
|
||||
)
|
||||
|
|
@ -0,0 +1,243 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_analytic_distribution_manual
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-python
|
||||
#: code:addons/account_analytic_distribution_manual/models/account_analytic_distribution_manual.py:0
|
||||
#, python-format
|
||||
msgid "%s (Copy)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_analytic_distribution_manual
|
||||
msgid "Account analytic distribution manual"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__active
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.actions.act_window,help:account_analytic_distribution_manual.action_account_analytic_distribution_manual
|
||||
msgid "Add a new Manual Analytic Distributions"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution
|
||||
msgid "Analytic"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_names
|
||||
msgid "Analytic Account Names"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_ids
|
||||
msgid "Analytic Accounts"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_search
|
||||
msgid "Analytic Distribution Search"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_analytic_line
|
||||
msgid "Analytic Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_analytic_mixin
|
||||
msgid "Analytic Mixin"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_precision
|
||||
msgid "Analytic Precision"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_ids
|
||||
msgid "Analytic accounts computed from analytic distribution."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_model__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_reconcile_model_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_analytic_mixin__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense_split__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_purchase_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_sale_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_scrap__analytic_distribution_import
|
||||
msgid "Analytic distribution (importable)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_line__manual_distribution_id
|
||||
msgid "Analytic distribution manual"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_form
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_search
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_base
|
||||
msgid "Base"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_names
|
||||
msgid ""
|
||||
"Comma-separated analytic account names, in case it is useful to be included "
|
||||
"in the exported data."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__company_id
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_model__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_reconcile_model_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_analytic_mixin__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_hr_expense__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_hr_expense_split__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_purchase_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_sale_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_move__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_scrap__analytic_distribution_import
|
||||
msgid ""
|
||||
"Defining this field, it will set the analytical distribution in JSON format,"
|
||||
" but using the analytic accounts names as keys of the dictionary, so it "
|
||||
"eases the human input."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_invoice_report
|
||||
msgid "Invoices Statistics"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.esm.js:0
|
||||
#, python-format
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.actions.act_window,name:account_analytic_distribution_manual.action_account_analytic_distribution_manual
|
||||
#: model:ir.ui.menu,name:account_analytic_distribution_manual.account_analytic_distribution_manual_menu
|
||||
msgid "Manual Analytic Distributions"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_model__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_invoice_report__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_move_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_reconcile_model_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_analytic_mixin__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense_split__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_purchase_order_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_sale_order_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_scrap__manual_distribution_id
|
||||
msgid "Manual Distribution"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.xml:0
|
||||
#, python-format
|
||||
msgid "Manual distribution"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__name
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_form
|
||||
msgid "Name..."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.esm.js:0
|
||||
#, python-format
|
||||
msgid "No Analytic Distribution Manual found"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.constraint,message:account_analytic_distribution_manual.constraint_account_analytic_distribution_manual_unique_name_by_company
|
||||
msgid "The name must be unique per Company!"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,243 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_analytic_distribution_manual
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-python
|
||||
#: code:addons/account_analytic_distribution_manual/models/account_analytic_distribution_manual.py:0
|
||||
#, python-format
|
||||
msgid "%s (Copy)"
|
||||
msgstr "%s (Kopija)"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_analytic_distribution_manual
|
||||
msgid "Account analytic distribution manual"
|
||||
msgstr "Ručna analitička distribucija računa"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__active
|
||||
msgid "Active"
|
||||
msgstr "Aktivan"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.actions.act_window,help:account_analytic_distribution_manual.action_account_analytic_distribution_manual
|
||||
msgid "Add a new Manual Analytic Distributions"
|
||||
msgstr "Dodaj novu ručnu analitičku distribuciju"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution
|
||||
msgid "Analytic"
|
||||
msgstr "Analitika"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_names
|
||||
msgid "Analytic Account Names"
|
||||
msgstr "Nazivi analitičkih računa"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_ids
|
||||
msgid "Analytic Accounts"
|
||||
msgstr "Analitički računi"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_search
|
||||
msgid "Analytic Distribution Search"
|
||||
msgstr "Pretraga analitičkih distribucija"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_analytic_line
|
||||
msgid "Analytic Line"
|
||||
msgstr "Analitička stavka"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_analytic_mixin
|
||||
msgid "Analytic Mixin"
|
||||
msgstr "Mixin Analitike"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_precision
|
||||
msgid "Analytic Precision"
|
||||
msgstr "Preciznost analitike"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_ids
|
||||
msgid "Analytic accounts computed from analytic distribution."
|
||||
msgstr "Analitički računi računati iz analitičke distribucije."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_model__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_reconcile_model_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_analytic_mixin__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense_split__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_purchase_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_sale_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_scrap__analytic_distribution_import
|
||||
msgid "Analytic distribution (importable)"
|
||||
msgstr "Analitička distribucija (uvozljiva)"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_line__manual_distribution_id
|
||||
msgid "Analytic distribution manual"
|
||||
msgstr "Ručna analitička distribucija"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_form
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_search
|
||||
msgid "Archived"
|
||||
msgstr "Arhivirano"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_base
|
||||
msgid "Base"
|
||||
msgstr "Osnova"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_names
|
||||
msgid ""
|
||||
"Comma-separated analytic account names, in case it is useful to be included "
|
||||
"in the exported data."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__company_id
|
||||
msgid "Company"
|
||||
msgstr "Preduzeće"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Kreirao"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Kreirano"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_model__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_reconcile_model_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_analytic_mixin__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_hr_expense__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_hr_expense_split__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_purchase_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_sale_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_move__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_scrap__analytic_distribution_import
|
||||
msgid ""
|
||||
"Defining this field, it will set the analytical distribution in JSON format,"
|
||||
" but using the analytic accounts names as keys of the dictionary, so it "
|
||||
"eases the human input."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Prikazani naziv"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_invoice_report
|
||||
msgid "Invoices Statistics"
|
||||
msgstr "Statistika faktura"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Stavka žurnala"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Zadnje mijenjano"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Zadnji ažurirao"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Zadnje ažurirano"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.esm.js:0
|
||||
#, python-format
|
||||
msgid "Loading..."
|
||||
msgstr "Učitavanje..."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.actions.act_window,name:account_analytic_distribution_manual.action_account_analytic_distribution_manual
|
||||
#: model:ir.ui.menu,name:account_analytic_distribution_manual.account_analytic_distribution_manual_menu
|
||||
msgid "Manual Analytic Distributions"
|
||||
msgstr "Ručne analitičke distribucije"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_model__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_invoice_report__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_move_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_reconcile_model_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_analytic_mixin__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense_split__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_purchase_order_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_sale_order_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_scrap__manual_distribution_id
|
||||
msgid "Manual Distribution"
|
||||
msgstr "Ručna distribucija"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.xml:0
|
||||
#, python-format
|
||||
msgid "Manual distribution"
|
||||
msgstr "Ručna distribucija"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__name
|
||||
msgid "Name"
|
||||
msgstr "Naziv:"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_form
|
||||
msgid "Name..."
|
||||
msgstr "Naziv..."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.esm.js:0
|
||||
#, python-format
|
||||
msgid "No Analytic Distribution Manual found"
|
||||
msgstr "Nije pronađena ručna analitička distribucija"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.constraint,message:account_analytic_distribution_manual.constraint_account_analytic_distribution_manual_unique_name_by_company
|
||||
msgid "The name must be unique per Company!"
|
||||
msgstr "Naziv mora biti jedinstven po kompaniji!"
|
||||
|
|
@ -0,0 +1,258 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_analytic_distribution_manual
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-29 06:51-0500\n"
|
||||
"PO-Revision-Date: 2025-06-06 14:25+0000\n"
|
||||
"Last-Translator: Francisco Javier Galera Martínez <javier.galera@sygel.es>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.10.4\n"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-python
|
||||
#: code:addons/account_analytic_distribution_manual/models/account_analytic_distribution_manual.py:0
|
||||
#, python-format
|
||||
msgid "%s (Copy)"
|
||||
msgstr "%s (Copia)"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_analytic_distribution_manual
|
||||
msgid "Account analytic distribution manual"
|
||||
msgstr "Distribución Analítica Manual"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__active
|
||||
msgid "Active"
|
||||
msgstr "Activo"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.actions.act_window,help:account_analytic_distribution_manual.action_account_analytic_distribution_manual
|
||||
msgid "Add a new Manual Analytic Distributions"
|
||||
msgstr "Agregar nueva Distribución Analítica Manual"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution
|
||||
msgid "Analytic"
|
||||
msgstr "Analítico"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_names
|
||||
msgid "Analytic Account Names"
|
||||
msgstr "Nombres de cuentas analíticas"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_ids
|
||||
msgid "Analytic Accounts"
|
||||
msgstr "Cuentas Analíticas"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_search
|
||||
msgid "Analytic Distribution Search"
|
||||
msgstr "Buscar Distribución Analítica"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_analytic_line
|
||||
msgid "Analytic Line"
|
||||
msgstr "Línea Analítica"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_analytic_mixin
|
||||
msgid "Analytic Mixin"
|
||||
msgstr "Mezcla analítica"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_precision
|
||||
msgid "Analytic Precision"
|
||||
msgstr "Precisión Analítica"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_ids
|
||||
msgid "Analytic accounts computed from analytic distribution."
|
||||
msgstr "Cuentas analíticas calculadas a partir de la distribución analítica."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_model__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_reconcile_model_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_analytic_mixin__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense_split__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_purchase_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_sale_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_scrap__analytic_distribution_import
|
||||
msgid "Analytic distribution (importable)"
|
||||
msgstr "Distribución analítica (importable)"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_line__manual_distribution_id
|
||||
msgid "Analytic distribution manual"
|
||||
msgstr "Distribución Analítica Manual"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_form
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_search
|
||||
msgid "Archived"
|
||||
msgstr "Archivado"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_base
|
||||
msgid "Base"
|
||||
msgstr "Base"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_names
|
||||
msgid ""
|
||||
"Comma-separated analytic account names, in case it is useful to be included "
|
||||
"in the exported data."
|
||||
msgstr ""
|
||||
"Nombres de cuentas analíticas separados por comas, en caso de que sea útil "
|
||||
"incluirlos en los datos exportados."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__company_id
|
||||
msgid "Company"
|
||||
msgstr "Compañia"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado el"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_model__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_reconcile_model_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_analytic_mixin__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_hr_expense__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_hr_expense_split__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_purchase_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_sale_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_move__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_scrap__analytic_distribution_import
|
||||
msgid ""
|
||||
"Defining this field, it will set the analytical distribution in JSON format, "
|
||||
"but using the analytic accounts names as keys of the dictionary, so it eases "
|
||||
"the human input."
|
||||
msgstr ""
|
||||
"Al definir este campo, se establecerá la distribución analítica en formato "
|
||||
"JSON, pero utilizando los nombres de las cuentas analíticas como claves del "
|
||||
"diccionario, por lo que facilita la entrada humana."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nombre mostrado"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_invoice_report
|
||||
msgid "Invoices Statistics"
|
||||
msgstr "Estadísticas de facturas"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Artículo de diario"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Última modificación el"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Última actualización por"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Última actualización el"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.esm.js:0
|
||||
#, python-format
|
||||
msgid "Loading..."
|
||||
msgstr "Cargando..."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.actions.act_window,name:account_analytic_distribution_manual.action_account_analytic_distribution_manual
|
||||
#: model:ir.ui.menu,name:account_analytic_distribution_manual.account_analytic_distribution_manual_menu
|
||||
msgid "Manual Analytic Distributions"
|
||||
msgstr "Distribuciones analíticas manuales"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_model__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_invoice_report__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_move_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_reconcile_model_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_analytic_mixin__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense_split__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_purchase_order_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_sale_order_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_scrap__manual_distribution_id
|
||||
msgid "Manual Distribution"
|
||||
msgstr "Distribución manual"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.xml:0
|
||||
#, python-format
|
||||
msgid "Manual distribution"
|
||||
msgstr "Distribución Manual"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__name
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_form
|
||||
msgid "Name..."
|
||||
msgstr "Nombre..."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.esm.js:0
|
||||
#, python-format
|
||||
msgid "No Analytic Distribution Manual found"
|
||||
msgstr "Distribuciones Manuales no encontradas"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.constraint,message:account_analytic_distribution_manual.constraint_account_analytic_distribution_manual_unique_name_by_company
|
||||
msgid "The name must be unique per Company!"
|
||||
msgstr "El nombre debe ser único por compañía!"
|
||||
|
||||
#~ msgid "Add a new Manual analytic distributions"
|
||||
#~ msgstr "Agregar nueva Distribución Analítica Manual"
|
||||
|
||||
#~ msgid "Manual analytic distributions"
|
||||
#~ msgstr "Distribuciones analíticas manuales"
|
||||
|
|
@ -0,0 +1,249 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_analytic_distribution_manual
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-02-12 21:06+0000\n"
|
||||
"Last-Translator: Alexis de Lattre <alexis@via.ecp.fr>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 5.6.2\n"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-python
|
||||
#: code:addons/account_analytic_distribution_manual/models/account_analytic_distribution_manual.py:0
|
||||
#, python-format
|
||||
msgid "%s (Copy)"
|
||||
msgstr "%s (Copie)"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_analytic_distribution_manual
|
||||
msgid "Account analytic distribution manual"
|
||||
msgstr "Distribution analytique manuelle"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__active
|
||||
msgid "Active"
|
||||
msgstr "Actif"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.actions.act_window,help:account_analytic_distribution_manual.action_account_analytic_distribution_manual
|
||||
msgid "Add a new Manual Analytic Distributions"
|
||||
msgstr "Ajouter une nouvelle distribution analytique manuelle"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution
|
||||
msgid "Analytic"
|
||||
msgstr "Analytique"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_names
|
||||
msgid "Analytic Account Names"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_ids
|
||||
msgid "Analytic Accounts"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_search
|
||||
msgid "Analytic Distribution Search"
|
||||
msgstr "Recherche de distribution analytique"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_analytic_line
|
||||
msgid "Analytic Line"
|
||||
msgstr "Ligne analytique"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_analytic_mixin
|
||||
msgid "Analytic Mixin"
|
||||
msgstr "Mixin analytique"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_precision
|
||||
msgid "Analytic Precision"
|
||||
msgstr "Précision analytique"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_ids
|
||||
msgid "Analytic accounts computed from analytic distribution."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_model__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_reconcile_model_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_analytic_mixin__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense_split__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_purchase_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_sale_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_scrap__analytic_distribution_import
|
||||
msgid "Analytic distribution (importable)"
|
||||
msgstr "Distribution analytique (importable)"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_line__manual_distribution_id
|
||||
msgid "Analytic distribution manual"
|
||||
msgstr "Distribution analytique manuelle"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_form
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_search
|
||||
msgid "Archived"
|
||||
msgstr "Archivé"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_base
|
||||
msgid "Base"
|
||||
msgstr "Base"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_names
|
||||
msgid ""
|
||||
"Comma-separated analytic account names, in case it is useful to be included "
|
||||
"in the exported data."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__company_id
|
||||
msgid "Company"
|
||||
msgstr "Société"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Créé par"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Créé le"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_model__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_reconcile_model_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_analytic_mixin__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_hr_expense__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_hr_expense_split__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_purchase_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_sale_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_move__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_scrap__analytic_distribution_import
|
||||
msgid ""
|
||||
"Defining this field, it will set the analytical distribution in JSON format, "
|
||||
"but using the analytic accounts names as keys of the dictionary, so it eases "
|
||||
"the human input."
|
||||
msgstr ""
|
||||
"Le fait de définir ce champ va enregistrer la distribution analytique au "
|
||||
"format JSON en utilisant les noms des comptes analytiques comme clés du "
|
||||
"dictionnaire, ce qui facilite la saisie."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nom affiché"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_invoice_report
|
||||
msgid "Invoices Statistics"
|
||||
msgstr "Statistiques de facturation"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Écriture comptable"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Dernière modification le"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Dernière mise à jour par"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Dernière mise à jour le"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.esm.js:0
|
||||
#, python-format
|
||||
msgid "Loading..."
|
||||
msgstr "Chargement..."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.actions.act_window,name:account_analytic_distribution_manual.action_account_analytic_distribution_manual
|
||||
#: model:ir.ui.menu,name:account_analytic_distribution_manual.account_analytic_distribution_manual_menu
|
||||
msgid "Manual Analytic Distributions"
|
||||
msgstr "Distributions analytiques manuelles"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_model__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_invoice_report__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_move_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_reconcile_model_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_analytic_mixin__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense_split__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_purchase_order_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_sale_order_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_scrap__manual_distribution_id
|
||||
msgid "Manual Distribution"
|
||||
msgstr "Distribution manuelle"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.xml:0
|
||||
#, python-format
|
||||
msgid "Manual distribution"
|
||||
msgstr "Distribution manuelle"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__name
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_form
|
||||
msgid "Name..."
|
||||
msgstr "Nom..."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.esm.js:0
|
||||
#, python-format
|
||||
msgid "No Analytic Distribution Manual found"
|
||||
msgstr "Aucune distribution analytique manuelle trouvée"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.constraint,message:account_analytic_distribution_manual.constraint_account_analytic_distribution_manual_unique_name_by_company
|
||||
msgid "The name must be unique per Company!"
|
||||
msgstr "Le nom doit être unique au sein de chaque société !"
|
||||
|
|
@ -0,0 +1,254 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_analytic_distribution_manual
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-03-06 11:53+0000\n"
|
||||
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.10.2\n"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-python
|
||||
#: code:addons/account_analytic_distribution_manual/models/account_analytic_distribution_manual.py:0
|
||||
#, python-format
|
||||
msgid "%s (Copy)"
|
||||
msgstr "%s (copia)"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_analytic_distribution_manual
|
||||
msgid "Account analytic distribution manual"
|
||||
msgstr "Distribuzione analitica conto manuale"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__active
|
||||
msgid "Active"
|
||||
msgstr "Attiva"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.actions.act_window,help:account_analytic_distribution_manual.action_account_analytic_distribution_manual
|
||||
msgid "Add a new Manual Analytic Distributions"
|
||||
msgstr "Aggiungere una nuova distribuzione analitica manuale"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution
|
||||
msgid "Analytic"
|
||||
msgstr "Analitico"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_names
|
||||
msgid "Analytic Account Names"
|
||||
msgstr "Nomi conto analitico"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_ids
|
||||
msgid "Analytic Accounts"
|
||||
msgstr "Conti analitici"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_search
|
||||
msgid "Analytic Distribution Search"
|
||||
msgstr "Ricerca distribuzione analitica"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_analytic_line
|
||||
msgid "Analytic Line"
|
||||
msgstr "Riga analitica"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_analytic_mixin
|
||||
msgid "Analytic Mixin"
|
||||
msgstr "Mixin analitica"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_precision
|
||||
msgid "Analytic Precision"
|
||||
msgstr "Precisione analitica"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_ids
|
||||
msgid "Analytic accounts computed from analytic distribution."
|
||||
msgstr "Conti analitici calcolati da distribuzione analitica."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_model__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_reconcile_model_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_analytic_mixin__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense_split__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_purchase_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_sale_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_scrap__analytic_distribution_import
|
||||
msgid "Analytic distribution (importable)"
|
||||
msgstr "Distribuzione analitica (importabile)"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_line__manual_distribution_id
|
||||
msgid "Analytic distribution manual"
|
||||
msgstr "Distribuzione analitica manuale"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_form
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_search
|
||||
msgid "Archived"
|
||||
msgstr "In archivio"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_base
|
||||
msgid "Base"
|
||||
msgstr "Imponibile"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_account_names
|
||||
msgid ""
|
||||
"Comma-separated analytic account names, in case it is useful to be included "
|
||||
"in the exported data."
|
||||
msgstr ""
|
||||
"Nomi conti analitici separati da virgola, nel caso sia utile includerli nei "
|
||||
"dati esportati."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__company_id
|
||||
msgid "Company"
|
||||
msgstr "Azienda"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creato da"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creato il"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_manual__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_analytic_distribution_model__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_account_reconcile_model_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_analytic_mixin__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_hr_expense__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_hr_expense_split__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_purchase_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_sale_order_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_move__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_move_line__analytic_distribution_import
|
||||
#: model:ir.model.fields,help:account_analytic_distribution_manual.field_stock_scrap__analytic_distribution_import
|
||||
msgid ""
|
||||
"Defining this field, it will set the analytical distribution in JSON format, "
|
||||
"but using the analytic accounts names as keys of the dictionary, so it eases "
|
||||
"the human input."
|
||||
msgstr ""
|
||||
"Definendo questo campo, verrà impostata la distribuzione analitica in "
|
||||
"formato JSON, ma utilizzando i nomi degli account analitici come chiavi del "
|
||||
"dizionario, in modo da semplificare l'inserimento umano."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nome visualizzato"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_invoice_report
|
||||
msgid "Invoices Statistics"
|
||||
msgstr "Statistiche fatture"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model,name:account_analytic_distribution_manual.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Movimento contabile"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Ultima modifica il"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Ultimo aggiornamento di"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Ultimo aggiornamento il"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.esm.js:0
|
||||
#, python-format
|
||||
msgid "Loading..."
|
||||
msgstr "Caricamento ..."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.actions.act_window,name:account_analytic_distribution_manual.action_account_analytic_distribution_manual
|
||||
#: model:ir.ui.menu,name:account_analytic_distribution_manual.account_analytic_distribution_manual_menu
|
||||
msgid "Manual Analytic Distributions"
|
||||
msgstr "Distribuzione analitica manuale"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_model__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_invoice_report__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_move_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_reconcile_model_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_analytic_mixin__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_hr_expense_split__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_purchase_order_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_sale_order_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_move_line__manual_distribution_id
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_stock_scrap__manual_distribution_id
|
||||
msgid "Manual Distribution"
|
||||
msgstr "Distribuzione manuale"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.xml:0
|
||||
#, python-format
|
||||
msgid "Manual distribution"
|
||||
msgstr "Distribuzione manuale"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.fields,field_description:account_analytic_distribution_manual.field_account_analytic_distribution_manual__name
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model_terms:ir.ui.view,arch_db:account_analytic_distribution_manual.view_account_analytic_distribution_manual_form
|
||||
msgid "Name..."
|
||||
msgstr "Nome..."
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#. odoo-javascript
|
||||
#: code:addons/account_analytic_distribution_manual/static/src/components/analytic_distribution/analytic_distribution.esm.js:0
|
||||
#, python-format
|
||||
msgid "No Analytic Distribution Manual found"
|
||||
msgstr "Nessuna distribuzione analitica manuale trovata"
|
||||
|
||||
#. module: account_analytic_distribution_manual
|
||||
#: model:ir.model.constraint,message:account_analytic_distribution_manual.constraint_account_analytic_distribution_manual_unique_name_by_company
|
||||
msgid "The name must be unique per Company!"
|
||||
msgstr "Il nome deve essere univoco per azienda!"
|
||||
|
||||
#~ msgid "Manual Distribution ID"
|
||||
#~ msgstr "ID distribuzione manuale"
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# Copyright 2024 Tecnativa - Víctor Martínez
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from openupgradelib import openupgrade
|
||||
|
||||
|
||||
@openupgrade.migrate()
|
||||
def migrate(env, version):
|
||||
openupgrade.logged_query(
|
||||
env.cr,
|
||||
"""
|
||||
UPDATE account_analytic_line AS aal
|
||||
SET manual_distribution_id = aml.manual_distribution_id
|
||||
FROM account_move_line AS aml
|
||||
WHERE aal.move_line_id = aml.id
|
||||
AND aml.manual_distribution_id IS NOT NULL
|
||||
AND aal.manual_distribution_id IS NULL
|
||||
""",
|
||||
)
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
from . import account_analytic_distribution_manual
|
||||
from . import account_analytic_line
|
||||
from . import account_move_line
|
||||
from . import analytic_mixin
|
||||
from . import base
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
# Copyright 2024 Tecnativa - Carlos Lopez
|
||||
# Copyright 2024 Tecnativa - Víctor Martínez
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
from odoo import _, api, fields, models
|
||||
|
||||
|
||||
class AccountAnalyticDistributionManual(models.Model):
|
||||
_name = "account.analytic.distribution.manual"
|
||||
_inherit = "analytic.mixin"
|
||||
_description = "Account analytic distribution manual"
|
||||
|
||||
name = fields.Char(required=True)
|
||||
active = fields.Boolean(default=True)
|
||||
company_id = fields.Many2one(
|
||||
"res.company", required=True, default=lambda self: self.env.company
|
||||
)
|
||||
|
||||
_sql_constraints = [
|
||||
(
|
||||
"unique_name_by_company",
|
||||
"unique(name, company_id)",
|
||||
"The name must be unique per Company!",
|
||||
),
|
||||
]
|
||||
|
||||
@api.returns("self", lambda value: value.id)
|
||||
def copy(self, default=None):
|
||||
default = dict(default or {})
|
||||
if "name" not in default:
|
||||
default["name"] = _("%s (Copy)") % self.name
|
||||
return super().copy(default=default)
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
# Copyright 2024 Tecnativa - Víctor Martínez
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class AccountAnalyticLine(models.Model):
|
||||
_inherit = "account.analytic.line"
|
||||
|
||||
manual_distribution_id = fields.Many2one(
|
||||
comodel_name="account.analytic.distribution.manual",
|
||||
string="Analytic distribution manual",
|
||||
)
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
# Copyright 2024 Tecnativa - Víctor Martínez
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
from odoo import models
|
||||
|
||||
|
||||
class AccountMoveLine(models.Model):
|
||||
_inherit = "account.move.line"
|
||||
|
||||
def _prepare_analytic_lines(self):
|
||||
vals = super()._prepare_analytic_lines()
|
||||
if self.manual_distribution_id:
|
||||
for val in vals:
|
||||
val.update({"manual_distribution_id": self.manual_distribution_id.id})
|
||||
return vals
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# Copyright 2024 Tecnativa - Carlos Lopez
|
||||
# Copyright 2024 Tecnativa - Víctor Martínez
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class AnalyticMixin(models.AbstractModel):
|
||||
_inherit = "analytic.mixin"
|
||||
|
||||
manual_distribution_id = fields.Many2one("account.analytic.distribution.manual")
|
||||
analytic_distribution_import = fields.Json(
|
||||
compute="_compute_analytic_distribution_import",
|
||||
inverse="_inverse_analytic_distribution_import",
|
||||
readonly=False,
|
||||
string="Analytic distribution (importable)",
|
||||
help="Defining this field, it will set the analytical distribution in JSON "
|
||||
"format, but using the analytic accounts names as keys of the dictionary, so it "
|
||||
"eases the human input.",
|
||||
)
|
||||
|
||||
@api.depends("analytic_distribution")
|
||||
def _compute_analytic_distribution_import(self):
|
||||
aa_model = self.env["account.analytic.account"]
|
||||
for item in self:
|
||||
data = {}
|
||||
distribution = item.analytic_distribution or {}
|
||||
for key in list(distribution.keys()):
|
||||
aa_record = aa_model.browse(int(key))
|
||||
data[aa_record.name] = distribution[key]
|
||||
item.analytic_distribution_import = data
|
||||
|
||||
def _inverse_analytic_distribution_import(self):
|
||||
"""Convert the json to the appropriate value of analytic_distribution."""
|
||||
aa_model = self.env["account.analytic.account"]
|
||||
for item in self:
|
||||
company = (
|
||||
item.company_id if "company_id" in item._fields else self.env.company
|
||||
)
|
||||
base_domain = [("company_id", "in", company.ids + [False])]
|
||||
data = {}
|
||||
new_distribution = item.analytic_distribution_import or {}
|
||||
for key in list(new_distribution.keys()):
|
||||
domain = base_domain + [("name", "=", key)]
|
||||
aa_record = aa_model.search(
|
||||
domain,
|
||||
limit=1,
|
||||
)
|
||||
if aa_record:
|
||||
data[aa_record.id] = new_distribution[key]
|
||||
item.analytic_distribution = data
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
# Copyright 2024 Tecnativa - Carlos Lopez
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
import json
|
||||
|
||||
from lxml import etree
|
||||
|
||||
from odoo import api, models
|
||||
from odoo.tools.misc import frozendict
|
||||
|
||||
|
||||
class AnalyticMixin(models.AbstractModel):
|
||||
_inherit = "base"
|
||||
|
||||
@api.model
|
||||
def get_view(self, view_id=None, view_type="form", **options):
|
||||
"""
|
||||
The purpose of inheriting this method is to
|
||||
add a specific field, 'manual_distribution_id',
|
||||
to the tree/form views if the model has this field defined.
|
||||
|
||||
Additionally, if a one2many field exists
|
||||
and the related model has the 'manual_distribution_id' field,
|
||||
the method will add the 'manual_distribution_id' field to the sub-view.
|
||||
|
||||
Finally, the method returns the modified view.
|
||||
|
||||
Note: This method should be inherited in the base model,
|
||||
not in the analytic.mixin model,
|
||||
to ensure it executes correctly for models
|
||||
that do not inherit from the mixin but have one2many fields.
|
||||
For example, when rendering account.move,
|
||||
it does not inherit from analytic.mixin,
|
||||
but it has one2many fields that inherit from analytic.mixin.
|
||||
"""
|
||||
|
||||
def add_field(node, view_type, res_model):
|
||||
attribute = "column_invisible" if view_type == "tree" else "invisible"
|
||||
modifiers = json.dumps({attribute: True})
|
||||
field_options = {
|
||||
"name": manual_distribution_field_name,
|
||||
"modifiers": modifiers,
|
||||
}
|
||||
field_element = etree.SubElement(node, "field", field_options)
|
||||
new_arch, new_models = View.postprocess_and_fields(field_element, res_model)
|
||||
_merge_view_fields(all_models, new_models)
|
||||
return field_element
|
||||
|
||||
def model_has_field(model):
|
||||
return manual_distribution_field_name in self.env[model]._fields
|
||||
|
||||
def _merge_view_fields(all_models, new_models):
|
||||
"""Merge new_models into all_models. Both are {modelname(str) ➔ fields(tuple)}."""
|
||||
for model, view_fields in new_models.items():
|
||||
if model in all_models:
|
||||
all_models[model] = tuple(set(all_models[model]) | set(view_fields))
|
||||
else:
|
||||
all_models[model] = tuple(view_fields)
|
||||
|
||||
result = super().get_view(view_id=view_id, view_type=view_type, **options)
|
||||
if view_type in ["tree", "form"]:
|
||||
View = self.env["ir.ui.view"]
|
||||
manual_distribution_field_name = "manual_distribution_id"
|
||||
all_models = result["models"].copy() # {modelname(str) ➔ fields(tuple)}
|
||||
arch = etree.fromstring(result["arch"])
|
||||
if model_has_field(result.get("model")):
|
||||
root_node = arch.xpath(f"/{view_type}")
|
||||
for node in root_node:
|
||||
add_field(node, view_type, result.get("model"))
|
||||
# check fields one2many
|
||||
for (res_model, field_list) in result["models"].items():
|
||||
for field_name in field_list:
|
||||
if field_name not in self.env[res_model]._fields:
|
||||
continue
|
||||
field_def = self.env[res_model]._fields[field_name]
|
||||
if field_def.type != "one2many":
|
||||
continue
|
||||
if not model_has_field(field_def.comodel_name):
|
||||
continue
|
||||
for sub_view_type in ["tree", "form"]:
|
||||
xpath_expr = f"//field[@name='{field_name}']/{sub_view_type}"
|
||||
sub_node = arch.xpath(xpath_expr)
|
||||
for child_node in sub_node:
|
||||
add_field(child_node, sub_view_type, field_def.comodel_name)
|
||||
result["arch"] = etree.tostring(arch, encoding="unicode")
|
||||
result["models"] = frozendict(all_models)
|
||||
return result
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
#. Go to Invoicing > Configuration > Analytic Accounting > Manual Analytic Distributions
|
||||
#. Create or edit the necessary records.
|
||||
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
* Tecnativa (https://www.tecnativa.com):
|
||||
|
||||
* Carlos Lopez
|
||||
|
|
@ -0,0 +1 @@
|
|||
This module provides an easy way to quickly autocomplete analytic accounts on any model that has a field for analytic accounts.
|
||||
|
|
@ -0,0 +1 @@
|
|||
Compatibility with `Analytic Distribution Models` to use Manual Distribution as Default values
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
#. Go to Invoicing > Customer > Invoices
|
||||
#. Open or create a invoice
|
||||
#. On the invoice line, select the analytic account. A new field labeled "Manual Distribution" should appear at the top.
|
||||
#. Select a record from the list, and it will be added to the distribution and the invoice lines.
|
||||
|
|
@ -0,0 +1 @@
|
|||
from . import invoice_report
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
# Copyright 2024 Tecnativa - Carlos Lopez
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class AccountInvoiceReport(models.Model):
|
||||
_inherit = "account.invoice.report"
|
||||
|
||||
manual_distribution_id = fields.Many2one(
|
||||
"account.analytic.distribution.manual", readonly=True
|
||||
)
|
||||
|
||||
def _select(self):
|
||||
return super()._select() + ", line.manual_distribution_id"
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo noupdate="1">
|
||||
<record id="analytic_distribution_manual_comp_rule" model="ir.rule">
|
||||
<field name="name">Analytic Manual Distribution multi company rule</field>
|
||||
<field name="model_id" ref="model_account_analytic_distribution_manual" />
|
||||
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
"id","name","model_id/id","group_id/id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_account_analytic_distribution_manual_group_user","account_analytic_distribution_manual_group_user","model_account_analytic_distribution_manual","base.group_user",1,0,0,0
|
||||
"access_account_analytic_distribution_manual_group_analytic_accounting","access_account_analytic_distribution_manual_group_analytic_accounting","model_account_analytic_distribution_manual","analytic.group_analytic_accounting",1,1,1,1
|
||||
|
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
|
|
@ -0,0 +1,449 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
|
||||
<title>Account analytic distribution manual</title>
|
||||
<style type="text/css">
|
||||
|
||||
/*
|
||||
:Author: David Goodger (goodger@python.org)
|
||||
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
|
||||
:Copyright: This stylesheet has been placed in the public domain.
|
||||
|
||||
Default cascading style sheet for the HTML output of Docutils.
|
||||
Despite the name, some widely supported CSS2 features are used.
|
||||
|
||||
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
|
||||
customize this style sheet.
|
||||
*/
|
||||
|
||||
/* used to remove borders from tables and images */
|
||||
.borderless, table.borderless td, table.borderless th {
|
||||
border: 0 }
|
||||
|
||||
table.borderless td, table.borderless th {
|
||||
/* Override padding for "table.docutils td" with "! important".
|
||||
The right padding separates the table cells. */
|
||||
padding: 0 0.5em 0 0 ! important }
|
||||
|
||||
.first {
|
||||
/* Override more specific margin styles with "! important". */
|
||||
margin-top: 0 ! important }
|
||||
|
||||
.last, .with-subtitle {
|
||||
margin-bottom: 0 ! important }
|
||||
|
||||
.hidden {
|
||||
display: none }
|
||||
|
||||
.subscript {
|
||||
vertical-align: sub;
|
||||
font-size: smaller }
|
||||
|
||||
.superscript {
|
||||
vertical-align: super;
|
||||
font-size: smaller }
|
||||
|
||||
a.toc-backref {
|
||||
text-decoration: none ;
|
||||
color: black }
|
||||
|
||||
blockquote.epigraph {
|
||||
margin: 2em 5em ; }
|
||||
|
||||
dl.docutils dd {
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Uncomment (and remove this text!) to get bold-faced definition list terms
|
||||
dl.docutils dt {
|
||||
font-weight: bold }
|
||||
*/
|
||||
|
||||
div.abstract {
|
||||
margin: 2em 5em }
|
||||
|
||||
div.abstract p.topic-title {
|
||||
font-weight: bold ;
|
||||
text-align: center }
|
||||
|
||||
div.admonition, div.attention, div.caution, div.danger, div.error,
|
||||
div.hint, div.important, div.note, div.tip, div.warning {
|
||||
margin: 2em ;
|
||||
border: medium outset ;
|
||||
padding: 1em }
|
||||
|
||||
div.admonition p.admonition-title, div.hint p.admonition-title,
|
||||
div.important p.admonition-title, div.note p.admonition-title,
|
||||
div.tip p.admonition-title {
|
||||
font-weight: bold ;
|
||||
font-family: sans-serif }
|
||||
|
||||
div.attention p.admonition-title, div.caution p.admonition-title,
|
||||
div.danger p.admonition-title, div.error p.admonition-title,
|
||||
div.warning p.admonition-title, .code .error {
|
||||
color: red ;
|
||||
font-weight: bold ;
|
||||
font-family: sans-serif }
|
||||
|
||||
/* Uncomment (and remove this text!) to get reduced vertical space in
|
||||
compound paragraphs.
|
||||
div.compound .compound-first, div.compound .compound-middle {
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
div.compound .compound-last, div.compound .compound-middle {
|
||||
margin-top: 0.5em }
|
||||
*/
|
||||
|
||||
div.dedication {
|
||||
margin: 2em 5em ;
|
||||
text-align: center ;
|
||||
font-style: italic }
|
||||
|
||||
div.dedication p.topic-title {
|
||||
font-weight: bold ;
|
||||
font-style: normal }
|
||||
|
||||
div.figure {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
div.footer, div.header {
|
||||
clear: both;
|
||||
font-size: smaller }
|
||||
|
||||
div.line-block {
|
||||
display: block ;
|
||||
margin-top: 1em ;
|
||||
margin-bottom: 1em }
|
||||
|
||||
div.line-block div.line-block {
|
||||
margin-top: 0 ;
|
||||
margin-bottom: 0 ;
|
||||
margin-left: 1.5em }
|
||||
|
||||
div.sidebar {
|
||||
margin: 0 0 0.5em 1em ;
|
||||
border: medium outset ;
|
||||
padding: 1em ;
|
||||
background-color: #ffffee ;
|
||||
width: 40% ;
|
||||
float: right ;
|
||||
clear: right }
|
||||
|
||||
div.sidebar p.rubric {
|
||||
font-family: sans-serif ;
|
||||
font-size: medium }
|
||||
|
||||
div.system-messages {
|
||||
margin: 5em }
|
||||
|
||||
div.system-messages h1 {
|
||||
color: red }
|
||||
|
||||
div.system-message {
|
||||
border: medium outset ;
|
||||
padding: 1em }
|
||||
|
||||
div.system-message p.system-message-title {
|
||||
color: red ;
|
||||
font-weight: bold }
|
||||
|
||||
div.topic {
|
||||
margin: 2em }
|
||||
|
||||
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
|
||||
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
|
||||
margin-top: 0.4em }
|
||||
|
||||
h1.title {
|
||||
text-align: center }
|
||||
|
||||
h2.subtitle {
|
||||
text-align: center }
|
||||
|
||||
hr.docutils {
|
||||
width: 75% }
|
||||
|
||||
img.align-left, .figure.align-left, object.align-left, table.align-left {
|
||||
clear: left ;
|
||||
float: left ;
|
||||
margin-right: 1em }
|
||||
|
||||
img.align-right, .figure.align-right, object.align-right, table.align-right {
|
||||
clear: right ;
|
||||
float: right ;
|
||||
margin-left: 1em }
|
||||
|
||||
img.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.align-center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left }
|
||||
|
||||
.align-center {
|
||||
clear: both ;
|
||||
text-align: center }
|
||||
|
||||
.align-right {
|
||||
text-align: right }
|
||||
|
||||
/* reset inner alignment in figures */
|
||||
div.align-right {
|
||||
text-align: inherit }
|
||||
|
||||
/* div.align-center * { */
|
||||
/* text-align: left } */
|
||||
|
||||
.align-top {
|
||||
vertical-align: top }
|
||||
|
||||
.align-middle {
|
||||
vertical-align: middle }
|
||||
|
||||
.align-bottom {
|
||||
vertical-align: bottom }
|
||||
|
||||
ol.simple, ul.simple {
|
||||
margin-bottom: 1em }
|
||||
|
||||
ol.arabic {
|
||||
list-style: decimal }
|
||||
|
||||
ol.loweralpha {
|
||||
list-style: lower-alpha }
|
||||
|
||||
ol.upperalpha {
|
||||
list-style: upper-alpha }
|
||||
|
||||
ol.lowerroman {
|
||||
list-style: lower-roman }
|
||||
|
||||
ol.upperroman {
|
||||
list-style: upper-roman }
|
||||
|
||||
p.attribution {
|
||||
text-align: right ;
|
||||
margin-left: 50% }
|
||||
|
||||
p.caption {
|
||||
font-style: italic }
|
||||
|
||||
p.credits {
|
||||
font-style: italic ;
|
||||
font-size: smaller }
|
||||
|
||||
p.label {
|
||||
white-space: nowrap }
|
||||
|
||||
p.rubric {
|
||||
font-weight: bold ;
|
||||
font-size: larger ;
|
||||
color: maroon ;
|
||||
text-align: center }
|
||||
|
||||
p.sidebar-title {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold ;
|
||||
font-size: larger }
|
||||
|
||||
p.sidebar-subtitle {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold }
|
||||
|
||||
p.topic-title {
|
||||
font-weight: bold }
|
||||
|
||||
pre.address {
|
||||
margin-bottom: 0 ;
|
||||
margin-top: 0 ;
|
||||
font: inherit }
|
||||
|
||||
pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
pre.code .ln { color: gray; } /* line numbers */
|
||||
pre.code, code { background-color: #eeeeee }
|
||||
pre.code .comment, code .comment { color: #5C6576 }
|
||||
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
||||
pre.code .literal.string, code .literal.string { color: #0C5404 }
|
||||
pre.code .name.builtin, code .name.builtin { color: #352B84 }
|
||||
pre.code .deleted, code .deleted { background-color: #DEB0A1}
|
||||
pre.code .inserted, code .inserted { background-color: #A3D289}
|
||||
|
||||
span.classifier {
|
||||
font-family: sans-serif ;
|
||||
font-style: oblique }
|
||||
|
||||
span.classifier-delimiter {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold }
|
||||
|
||||
span.interpreted {
|
||||
font-family: sans-serif }
|
||||
|
||||
span.option {
|
||||
white-space: nowrap }
|
||||
|
||||
span.pre {
|
||||
white-space: pre }
|
||||
|
||||
span.problematic, pre.problematic {
|
||||
color: red }
|
||||
|
||||
span.section-subtitle {
|
||||
/* font-size relative to parent (h1..h6 element) */
|
||||
font-size: 80% }
|
||||
|
||||
table.citation {
|
||||
border-left: solid 1px gray;
|
||||
margin-left: 1px }
|
||||
|
||||
table.docinfo {
|
||||
margin: 2em 4em }
|
||||
|
||||
table.docutils {
|
||||
margin-top: 0.5em ;
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
table.footnote {
|
||||
border-left: solid 1px black;
|
||||
margin-left: 1px }
|
||||
|
||||
table.docutils td, table.docutils th,
|
||||
table.docinfo td, table.docinfo th {
|
||||
padding-left: 0.5em ;
|
||||
padding-right: 0.5em ;
|
||||
vertical-align: top }
|
||||
|
||||
table.docutils th.field-name, table.docinfo th.docinfo-name {
|
||||
font-weight: bold ;
|
||||
text-align: left ;
|
||||
white-space: nowrap ;
|
||||
padding-left: 0 }
|
||||
|
||||
/* "booktabs" style (no vertical lines) */
|
||||
table.docutils.booktabs {
|
||||
border: 0px;
|
||||
border-top: 2px solid;
|
||||
border-bottom: 2px solid;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table.docutils.booktabs * {
|
||||
border: 0px;
|
||||
}
|
||||
table.docutils.booktabs th {
|
||||
border-bottom: thin solid;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
|
||||
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
|
||||
font-size: 100% }
|
||||
|
||||
ul.auto-toc {
|
||||
list-style-type: none }
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="document" id="account-analytic-distribution-manual">
|
||||
<h1 class="title">Account analytic distribution manual</h1>
|
||||
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! source digest: sha256:035507f0c4c09d8c7596c84710ffd03222bf8cb98b278245b67f1c6c88069ee9
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/account-analytic/tree/16.0/account_analytic_distribution_manual"><img alt="OCA/account-analytic" src="https://img.shields.io/badge/github-OCA%2Faccount--analytic-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-analytic-16-0/account-analytic-16-0-account_analytic_distribution_manual"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/account-analytic&target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
||||
<p>This module provides an easy way to quickly autocomplete analytic accounts on any model that has a field for analytic accounts.</p>
|
||||
<p><strong>Table of contents</strong></p>
|
||||
<div class="contents local topic" id="contents">
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="#configuration" id="toc-entry-1">Configuration</a></li>
|
||||
<li><a class="reference internal" href="#usage" id="toc-entry-2">Usage</a></li>
|
||||
<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-3">Known issues / Roadmap</a></li>
|
||||
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-4">Bug Tracker</a></li>
|
||||
<li><a class="reference internal" href="#credits" id="toc-entry-5">Credits</a><ul>
|
||||
<li><a class="reference internal" href="#authors" id="toc-entry-6">Authors</a></li>
|
||||
<li><a class="reference internal" href="#contributors" id="toc-entry-7">Contributors</a></li>
|
||||
<li><a class="reference internal" href="#maintainers" id="toc-entry-8">Maintainers</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="configuration">
|
||||
<h1><a class="toc-backref" href="#toc-entry-1">Configuration</a></h1>
|
||||
<ol class="arabic simple">
|
||||
<li>Go to Invoicing > Configuration > Analytic Accounting > Manual Analytic Distributions</li>
|
||||
<li>Create or edit the necessary records.</li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class="section" id="usage">
|
||||
<h1><a class="toc-backref" href="#toc-entry-2">Usage</a></h1>
|
||||
<ol class="arabic simple">
|
||||
<li>Go to Invoicing > Customer > Invoices</li>
|
||||
<li>Open or create a invoice</li>
|
||||
<li>On the invoice line, select the analytic account. A new field labeled “Manual Distribution” should appear at the top.</li>
|
||||
<li>Select a record from the list, and it will be added to the distribution and the invoice lines.</li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class="section" id="known-issues-roadmap">
|
||||
<h1><a class="toc-backref" href="#toc-entry-3">Known issues / Roadmap</a></h1>
|
||||
<p>Compatibility with <cite>Analytic Distribution Models</cite> to use Manual Distribution as Default values</p>
|
||||
</div>
|
||||
<div class="section" id="bug-tracker">
|
||||
<h1><a class="toc-backref" href="#toc-entry-4">Bug Tracker</a></h1>
|
||||
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-analytic/issues">GitHub Issues</a>.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
||||
<a class="reference external" href="https://github.com/OCA/account-analytic/issues/new?body=module:%20account_analytic_distribution_manual%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
|
||||
<p>Do not contact contributors directly about support or help with technical issues.</p>
|
||||
</div>
|
||||
<div class="section" id="credits">
|
||||
<h1><a class="toc-backref" href="#toc-entry-5">Credits</a></h1>
|
||||
<div class="section" id="authors">
|
||||
<h2><a class="toc-backref" href="#toc-entry-6">Authors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Tecnativa</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="contributors">
|
||||
<h2><a class="toc-backref" href="#toc-entry-7">Contributors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Tecnativa (<a class="reference external" href="https://www.tecnativa.com">https://www.tecnativa.com</a>):<ul>
|
||||
<li>Carlos Lopez</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="maintainers">
|
||||
<h2><a class="toc-backref" href="#toc-entry-8">Maintainers</a></h2>
|
||||
<p>This module is maintained by the OCA.</p>
|
||||
<a class="reference external image-reference" href="https://odoo-community.org">
|
||||
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
|
||||
</a>
|
||||
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||
mission is to support the collaborative development of Odoo features and
|
||||
promote its widespread use.</p>
|
||||
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-analytic/tree/16.0/account_analytic_distribution_manual">OCA/account-analytic</a> project on GitHub.</p>
|
||||
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,197 @@
|
|||
/** @odoo-module **/
|
||||
|
||||
import {AnalyticDistribution} from "@analytic/components/analytic_distribution/analytic_distribution";
|
||||
import {patch} from "@web/core/utils/patch";
|
||||
const {useState} = owl;
|
||||
|
||||
patch(AnalyticDistribution.prototype, "account_analytic_distribution_manual", {
|
||||
setup() {
|
||||
this._super();
|
||||
this.manual_distribution_by_id = {};
|
||||
this.state_manual_distribution = useState({
|
||||
id: this.props.record.data.manual_distribution_id
|
||||
? this.props.record.data.manual_distribution_id[0]
|
||||
: 0,
|
||||
label: "",
|
||||
analytic_distribution: [],
|
||||
});
|
||||
},
|
||||
async willStart() {
|
||||
await this._super();
|
||||
if (this.state_manual_distribution.id) {
|
||||
this.refreshManualDistribution(this.state_manual_distribution.id);
|
||||
}
|
||||
},
|
||||
async willUpdate(nextProps) {
|
||||
await this._super(nextProps);
|
||||
const record_id = this.props.record.data.id || 0;
|
||||
const current_manual_distribution_id = this.state_manual_distribution.id;
|
||||
const new_manual_distribution_id = nextProps.record.data.manual_distribution_id
|
||||
? this.props.record.data.manual_distribution_id[0]
|
||||
: 0;
|
||||
const manual_distribution_Changed =
|
||||
current_manual_distribution_id !== new_manual_distribution_id;
|
||||
// When record is created, and manual_distribution_id is cleared
|
||||
// but user discard changes, we need to refresh the manual distribution
|
||||
const force_refresh_discart = new_manual_distribution_id === 0 && record_id > 0;
|
||||
if (
|
||||
manual_distribution_Changed &&
|
||||
(new_manual_distribution_id > 0 || force_refresh_discart)
|
||||
) {
|
||||
await this.refreshManualDistribution(new_manual_distribution_id);
|
||||
}
|
||||
},
|
||||
async save() {
|
||||
await this._super();
|
||||
await this.props.record.update({
|
||||
manual_distribution_id: [
|
||||
this.state_manual_distribution.id,
|
||||
this.state_manual_distribution.label,
|
||||
],
|
||||
});
|
||||
},
|
||||
async refreshManualDistribution(manual_distribution_id) {
|
||||
if (manual_distribution_id === 0) {
|
||||
this.deleteManualTag();
|
||||
return;
|
||||
}
|
||||
const current_record = this.manual_distribution_by_id[manual_distribution_id];
|
||||
if (current_record) {
|
||||
this.state_manual_distribution.id = current_record.id;
|
||||
this.state_manual_distribution.label = current_record.display_name;
|
||||
this.state_manual_distribution.analytic_distribution =
|
||||
current_record.analytic_distribution;
|
||||
return;
|
||||
}
|
||||
const records = await this.fetchAnalyticDistributionManual([
|
||||
["id", "=", manual_distribution_id],
|
||||
]);
|
||||
if (records.length) {
|
||||
const record = records[0];
|
||||
this.state_manual_distribution.id = record.id;
|
||||
this.state_manual_distribution.label = record.display_name;
|
||||
this.state_manual_distribution.analytic_distribution =
|
||||
record.analytic_distribution;
|
||||
} else {
|
||||
this.deleteManualTag();
|
||||
}
|
||||
},
|
||||
get tags() {
|
||||
let res = this._super();
|
||||
if (this.state_manual_distribution.id) {
|
||||
// Remove the delete button from tags
|
||||
// it will be added only to the manual distribution tag
|
||||
/* eslint-disable-next-line no-unused-vars */
|
||||
res = res.map(({onDelete, ...rest}) => rest);
|
||||
res.unshift({
|
||||
id: this.nextId++,
|
||||
text: this.state_manual_distribution.label,
|
||||
onDelete: this.editingRecord ? () => this.deleteManualTag() : undefined,
|
||||
});
|
||||
}
|
||||
return res;
|
||||
},
|
||||
deleteManualTag() {
|
||||
this.state_manual_distribution = {
|
||||
id: 0,
|
||||
label: "",
|
||||
analytic_distribution: [],
|
||||
};
|
||||
// Clear all distribution
|
||||
for (const group_id in this.list) {
|
||||
this.list[group_id].distribution = [];
|
||||
}
|
||||
this.autoFill();
|
||||
},
|
||||
// Autocomplete
|
||||
sourcesAnalyticDistributionManual() {
|
||||
return [
|
||||
{
|
||||
placeholder: this.env._t("Loading..."),
|
||||
options: (searchTerm) =>
|
||||
this.loadOptionsSourceDistributionManual(searchTerm),
|
||||
},
|
||||
];
|
||||
},
|
||||
async loadOptionsSourceDistributionManual(searchTerm) {
|
||||
const searchLimit = 6;
|
||||
const records = await this.fetchAnalyticDistributionManual(
|
||||
[...this.searchAnalyticDistributionManualDomain(searchTerm)],
|
||||
searchLimit + 1
|
||||
);
|
||||
const options = [];
|
||||
for (const record of records) {
|
||||
options.push({
|
||||
value: record.id,
|
||||
label: record.display_name,
|
||||
analytic_distribution: record.analytic_distribution,
|
||||
});
|
||||
this.manual_distribution_by_id[record.id] = record;
|
||||
}
|
||||
if (!options.length) {
|
||||
options.push({
|
||||
label: this.env._t("No Analytic Distribution Manual found"),
|
||||
classList: "o_m2o_no_result",
|
||||
unselectable: true,
|
||||
});
|
||||
}
|
||||
return options;
|
||||
},
|
||||
async fetchAnalyticDistributionManual(domain, limit = null) {
|
||||
const args = {
|
||||
domain: domain,
|
||||
fields: ["id", "display_name", "analytic_distribution"],
|
||||
context: [],
|
||||
};
|
||||
if (limit) {
|
||||
args.limit = limit;
|
||||
}
|
||||
return await this.orm.call(
|
||||
"account.analytic.distribution.manual",
|
||||
"search_read",
|
||||
[],
|
||||
args
|
||||
);
|
||||
},
|
||||
searchAnalyticDistributionManualDomain(searchTerm) {
|
||||
const domain = [["name", "ilike", searchTerm]];
|
||||
if (this.props.record.data.company_id) {
|
||||
domain.push(["company_id", "=", this.props.record.data.company_id[0]]);
|
||||
}
|
||||
return domain;
|
||||
},
|
||||
onChangeAutoCompleteDistributionManual(inputValue) {
|
||||
if (inputValue === "") {
|
||||
this.deleteManualTag();
|
||||
}
|
||||
},
|
||||
async onSelectDistributionManual(option) {
|
||||
const selected_option = Object.getPrototypeOf(option);
|
||||
this.state_manual_distribution = {
|
||||
id: selected_option.value,
|
||||
label: selected_option.label,
|
||||
analytic_distribution: selected_option.analytic_distribution,
|
||||
};
|
||||
const account_ids = Object.keys(selected_option.analytic_distribution).map(
|
||||
(id) => parseInt(id, 10)
|
||||
);
|
||||
const analytic_accounts = await this.fetchAnalyticAccounts([
|
||||
["id", "in", account_ids],
|
||||
]);
|
||||
// Clear all distribution
|
||||
for (const group_id in this.list) {
|
||||
this.list[group_id].distribution = [];
|
||||
}
|
||||
for (const account of analytic_accounts) {
|
||||
// Add new tags
|
||||
const planId = account.root_plan_id[0];
|
||||
const tag = this.newTag(planId);
|
||||
tag.analytic_account_id = account.id;
|
||||
tag.analytic_account_name = account.display_name;
|
||||
tag.percentage = selected_option.analytic_distribution[account.id];
|
||||
this.list[planId].distribution.push(tag);
|
||||
}
|
||||
|
||||
this.autoFill();
|
||||
},
|
||||
});
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates xml:space="preserve">
|
||||
<t
|
||||
id="analytic_distribution_inherit"
|
||||
t-inherit="analytic.AnalyticDistributionPopup"
|
||||
t-inherit-mode="extension"
|
||||
owl="1"
|
||||
>
|
||||
<xpath expr="//span[@t-if='!sortedList.length']" position="before">
|
||||
<div class="pb-4 border-bottom">
|
||||
<strong>Manual distribution</strong>
|
||||
<AutoComplete
|
||||
id="'analytic_manual_distribution'"
|
||||
placeholder="'Search a Manual distribution...'"
|
||||
value="state_manual_distribution.label || ''"
|
||||
sources="sourcesAnalyticDistributionManual()"
|
||||
autoSelect="true"
|
||||
onSelect.alike="(option) => this.onSelectDistributionManual(option)"
|
||||
onChange.alike="({inputValue}) => this.onChangeAutoCompleteDistributionManual(inputValue)"
|
||||
/>
|
||||
</div>
|
||||
</xpath>
|
||||
</t>
|
||||
</templates>
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
/** @odoo-module */
|
||||
|
||||
import tour from "web_tour.tour";
|
||||
|
||||
tour.register(
|
||||
"account_analytic_distribution_manual",
|
||||
{
|
||||
test: true,
|
||||
url: "/web",
|
||||
},
|
||||
[
|
||||
tour.stepUtils.showAppsMenuItem(),
|
||||
{
|
||||
id: "account_menu_click",
|
||||
content: "Go to Invoicing",
|
||||
trigger: '.o_app[data-menu-xmlid="account.menu_finance"]',
|
||||
},
|
||||
{
|
||||
content: "Go to Customers",
|
||||
trigger: 'span:contains("Customers")',
|
||||
},
|
||||
{
|
||||
content: "Go to Invoices",
|
||||
trigger: 'a:contains("Invoices")',
|
||||
},
|
||||
{
|
||||
extra_trigger: '.breadcrumb:contains("Invoices")',
|
||||
content: "Create new invoice",
|
||||
trigger: ".o_list_button_add",
|
||||
},
|
||||
{
|
||||
content: "Add Customer",
|
||||
trigger:
|
||||
'div.o_field_widget.o_field_res_partner_many2one[name="partner_id"] div input',
|
||||
run: "text partner_a",
|
||||
},
|
||||
{
|
||||
content: "Valid Customer",
|
||||
trigger: '.ui-menu-item a:contains("partner_a")',
|
||||
},
|
||||
{
|
||||
content: "Add items",
|
||||
trigger:
|
||||
'div[name="invoice_line_ids"] .o_field_x2many_list_row_add a:contains("Add a line")',
|
||||
},
|
||||
{
|
||||
content: "Select product_a",
|
||||
trigger:
|
||||
'div[name="invoice_line_ids"] .o_selected_row .o_list_many2one[name="product_id"] input',
|
||||
},
|
||||
{
|
||||
content: "Type product_a",
|
||||
trigger:
|
||||
'div[name="invoice_line_ids"] .o_selected_row .o_list_many2one[name="product_id"] input',
|
||||
run: "text product_a",
|
||||
},
|
||||
{
|
||||
content: "Valid product_a",
|
||||
trigger: '.ui-menu-item-wrapper:contains("product_a")',
|
||||
},
|
||||
{
|
||||
content: "Select analytic_distribution",
|
||||
trigger:
|
||||
'div[name="invoice_line_ids"] .o_selected_row div.o_field_analytic_distribution[name="analytic_distribution"]',
|
||||
},
|
||||
{
|
||||
content: "Type Manual Distribution 1",
|
||||
trigger:
|
||||
'div[name="invoice_line_ids"] .o_selected_row .analytic_distribution_popup input[id="analytic_manual_distribution"]',
|
||||
run: "text Manual Distribution 1",
|
||||
},
|
||||
{
|
||||
content: "Valid Manual Distribution 1",
|
||||
trigger:
|
||||
'div[name="invoice_line_ids"] .o_selected_row .analytic_distribution_popup li a:contains("Manual Distribution 1")',
|
||||
},
|
||||
{
|
||||
content: "Apply selected Option",
|
||||
trigger:
|
||||
'div[name="invoice_line_ids"] .o_selected_row .analytic_distribution_popup input[id="analytic_manual_distribution"]',
|
||||
run: "click",
|
||||
},
|
||||
// Compatibility with analytic_distribution_widget_remove_save
|
||||
// this module remove buttons
|
||||
// so to close popup click on any form area
|
||||
{
|
||||
content: "Close Popup",
|
||||
trigger: "div.o_form_sheet_bg",
|
||||
run: "click",
|
||||
},
|
||||
{
|
||||
content: "Check Tag Manual is on the top",
|
||||
trigger:
|
||||
'div[name="invoice_line_ids"] .o_selected_row div.o_field_analytic_distribution[name="analytic_distribution"] div.o_field_tags div.o_tag_badge_text:contains("Manual Distribution 1")',
|
||||
},
|
||||
{
|
||||
content: "Confirm Invoice",
|
||||
trigger: 'button[name="action_post"]',
|
||||
run: "click",
|
||||
},
|
||||
// Save account.move
|
||||
...tour.stepUtils.saveForm(),
|
||||
]
|
||||
);
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
from . import test_analytic_distribution_manual
|
||||
from . import test_analytic_distribution_manual_tour
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# Copyright 2024 Tecnativa - Carlos Lopez
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||
|
||||
from odoo.addons.base.tests.common import BaseCommon
|
||||
|
||||
|
||||
class DistributionManualCommon(BaseCommon):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
AnalyticAccount = cls.env["account.analytic.account"]
|
||||
AnalyticPlan = cls.env["account.analytic.plan"]
|
||||
cls.ManualDistribution = cls.env["account.analytic.distribution.manual"]
|
||||
cls.plan_a = AnalyticPlan.create({"name": "Plan A"})
|
||||
cls.analytic_account_a1 = AnalyticAccount.create(
|
||||
{
|
||||
"name": "analytic_account_a1",
|
||||
"plan_id": cls.plan_a.id,
|
||||
}
|
||||
)
|
||||
cls.analytic_account_a2 = AnalyticAccount.create(
|
||||
{
|
||||
"name": "analytic_account_a2",
|
||||
"plan_id": cls.plan_a.id,
|
||||
}
|
||||
)
|
||||
cls.distribution_1 = cls.ManualDistribution.create(
|
||||
{
|
||||
"name": "Manual Distribution 1",
|
||||
"analytic_distribution": {
|
||||
cls.analytic_account_a1.id: 40,
|
||||
cls.analytic_account_a2.id: 60,
|
||||
},
|
||||
}
|
||||
)
|
||||
cls.product_a = cls.env["product.product"].create(
|
||||
{
|
||||
"name": "product_a",
|
||||
"lst_price": 100.0,
|
||||
"standard_price": 80.0,
|
||||
"taxes_id": False,
|
||||
}
|
||||
)
|
||||
cls.partner_a = cls.env["res.partner"].create({"name": "partner_a"})
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
# Copyright 2024 Tecnativa - Carlos Lopez
|
||||
# Copyright 2024 Tecnativa - Víctor Martínez
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||
from psycopg2.errors import UniqueViolation
|
||||
|
||||
from odoo.tests import Form, tagged
|
||||
from odoo.tools import mute_logger
|
||||
|
||||
from odoo.addons.account_analytic_distribution_manual.tests.common import (
|
||||
DistributionManualCommon,
|
||||
)
|
||||
|
||||
|
||||
@tagged("post_install", "-at_install")
|
||||
class TestAnalyticDistributionManual(DistributionManualCommon):
|
||||
@mute_logger("odoo.sql_db")
|
||||
def test_copy_manual_distribution(self):
|
||||
distribution = self.distribution_1.copy()
|
||||
self.assertEqual(distribution.name, "Manual Distribution 1 (Copy)")
|
||||
distribution2 = self.distribution_1.copy({"name": "New name"})
|
||||
self.assertEqual(distribution2.name, "New name")
|
||||
with self.assertRaises(UniqueViolation):
|
||||
self.ManualDistribution.create(
|
||||
{
|
||||
"name": "Manual Distribution 1",
|
||||
}
|
||||
)
|
||||
|
||||
def test_manual_distribution_analytic_distribution_process_01(self):
|
||||
invoice_form = Form(
|
||||
self.env["account.move"].with_context(default_move_type="out_invoice")
|
||||
)
|
||||
invoice_form.partner_id = self.partner_a
|
||||
with invoice_form.invoice_line_ids.new() as line_form:
|
||||
line_form.product_id = self.product_a
|
||||
line_form.manual_distribution_id = self.distribution_1
|
||||
invoice = invoice_form.save()
|
||||
invoice_line = invoice.invoice_line_ids
|
||||
invoice_line.analytic_distribution = self.distribution_1.analytic_distribution
|
||||
invoice.action_post()
|
||||
self.assertTrue(len(invoice_line.analytic_line_ids), 2)
|
||||
self.assertEqual(
|
||||
invoice_line.analytic_line_ids.mapped("manual_distribution_id"),
|
||||
self.distribution_1,
|
||||
)
|
||||
|
||||
def test_manual_distribution_analytic_distribution_process_02(self):
|
||||
invoice_form = Form(
|
||||
self.env["account.move"].with_context(default_move_type="out_invoice")
|
||||
)
|
||||
invoice_form.partner_id = self.partner_a
|
||||
with invoice_form.invoice_line_ids.new() as line_form:
|
||||
line_form.product_id = self.product_a
|
||||
invoice = invoice_form.save()
|
||||
invoice_line = invoice.invoice_line_ids
|
||||
invoice_line.manual_distribution_id = self.distribution_1
|
||||
self.analytic_account_a1.name = "test-1"
|
||||
aa_1 = self.analytic_account_a1
|
||||
self.analytic_account_a2.name = "test-2"
|
||||
aa_2 = self.analytic_account_a2
|
||||
invoice_line.analytic_distribution_import = {
|
||||
"test-1": 20.0,
|
||||
"test-2": 80.0,
|
||||
}
|
||||
self.assertEqual(
|
||||
invoice_line.analytic_distribution,
|
||||
{str(aa_1.id): 20.0, str(aa_2.id): 80.0},
|
||||
)
|
||||
invoice.action_post()
|
||||
self.assertTrue(len(invoice_line.analytic_line_ids), 2)
|
||||
self.assertEqual(
|
||||
invoice_line.analytic_line_ids.mapped("manual_distribution_id"),
|
||||
self.distribution_1,
|
||||
)
|
||||
accounts = invoice_line.analytic_line_ids.mapped("account_id")
|
||||
self.assertIn(aa_1, accounts)
|
||||
self.assertIn(aa_2, accounts)
|
||||
|
||||
def test_manual_distribution_analytic_distribution_text(self):
|
||||
self.analytic_account_a1.name = "test-1"
|
||||
aa_1 = self.analytic_account_a1
|
||||
self.analytic_account_a2.name = "test-2"
|
||||
aa_2 = self.analytic_account_a2
|
||||
self.assertEqual(
|
||||
self.distribution_1.analytic_distribution_import,
|
||||
{"test-1": 40.0, "test-2": 60.0},
|
||||
)
|
||||
# Set analytic_distribution_import field
|
||||
self.distribution_1.analytic_distribution_import = {
|
||||
"test-1": 20.0,
|
||||
"test-2": 80.0,
|
||||
}
|
||||
self.assertEqual(
|
||||
self.distribution_1.analytic_distribution,
|
||||
{str(aa_1.id): 20.0, str(aa_2.id): 80.0},
|
||||
)
|
||||
# Remove aa_2
|
||||
self.distribution_1.analytic_distribution_import = {"test-1": 40.0}
|
||||
self.assertEqual(
|
||||
self.distribution_1.analytic_distribution, {str(aa_1.id): 40.0}
|
||||
)
|
||||
# Create aa_2 again
|
||||
self.distribution_1.analytic_distribution_import = {
|
||||
"test-1": 40.0,
|
||||
"test-2": 60.0,
|
||||
}
|
||||
self.assertEqual(
|
||||
self.distribution_1.analytic_distribution,
|
||||
{str(aa_1.id): 40.0, str(aa_2.id): 60.0},
|
||||
)
|
||||
# Update with an "incorrect name"
|
||||
self.distribution_1.analytic_distribution_import = {
|
||||
"test-1": 40.0,
|
||||
"test-3": 60.0,
|
||||
}
|
||||
self.assertEqual(
|
||||
self.distribution_1.analytic_distribution, {str(aa_1.id): 40.0}
|
||||
)
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# Copyright 2024 Tecnativa - Carlos Lopez
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||
|
||||
from odoo.tests import RecordCapturer, new_test_user, tagged
|
||||
from odoo.tests.common import HttpCase, users
|
||||
|
||||
from odoo.addons.account_analytic_distribution_manual.tests.common import (
|
||||
DistributionManualCommon,
|
||||
)
|
||||
|
||||
|
||||
@tagged("post_install", "-at_install")
|
||||
class TestAnalyticDistributionManual(DistributionManualCommon, HttpCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
new_test_user(
|
||||
cls.env,
|
||||
login="analytic-manual-distribution-user",
|
||||
groups="analytic.group_analytic_accounting,account.group_account_invoice",
|
||||
)
|
||||
|
||||
@users("analytic-manual-distribution-user")
|
||||
def test_manual_distribution_tour(self):
|
||||
with RecordCapturer(
|
||||
self.env["account.move"], [("move_type", "=", "out_invoice")]
|
||||
) as capt:
|
||||
self.start_tour(
|
||||
"/web",
|
||||
"account_analytic_distribution_manual",
|
||||
login="analytic-manual-distribution-user",
|
||||
)
|
||||
invoice = capt.records
|
||||
self.assertEqual(invoice.partner_id, self.partner_a)
|
||||
self.assertEqual(invoice.state, "posted")
|
||||
# self.assertEqual(len(invoice.invoice_line_ids.analytic_line_ids), 2)
|
||||
# analytic_line1 = invoice.invoice_line_ids.analytic_line_ids.filtered(
|
||||
# lambda x: x.account_id == self.analytic_account_a1
|
||||
# )
|
||||
# self.assertEqual(analytic_line1.amount, 40)
|
||||
# analytic_line2 = invoice.invoice_line_ids.analytic_line_ids.filtered(
|
||||
# lambda x: x.account_id == self.analytic_account_a2
|
||||
# )
|
||||
# self.assertEqual(analytic_line2.amount, 60)
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
|
||||
<record id="view_account_analytic_distribution_manual_tree" model="ir.ui.view">
|
||||
<field name="name">view.account.analytic.distribution.manual.tree</field>
|
||||
<field name="model">account.analytic.distribution.manual</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name" />
|
||||
<field
|
||||
name="analytic_distribution"
|
||||
widget="analytic_distribution"
|
||||
optional="show"
|
||||
/>
|
||||
<field name="company_id" groups="base.group_multi_company" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_account_analytic_distribution_manual_form" model="ir.ui.view">
|
||||
<field name="name">view.account.analytic.distribution.manual.form</field>
|
||||
<field name="model">account.analytic.distribution.manual</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<widget
|
||||
name="web_ribbon"
|
||||
title="Archived"
|
||||
bg_color="bg-danger"
|
||||
attrs="{'invisible': [('active', '=', True)]}"
|
||||
/>
|
||||
<div class="oe_title">
|
||||
<label for="name" />
|
||||
<h1>
|
||||
<field name="name" placeholder="Name..." />
|
||||
</h1>
|
||||
</div>
|
||||
<group colspan="2">
|
||||
<field name="active" invisible="1" />
|
||||
<field name="company_id" groups="base.group_multi_company" />
|
||||
<field
|
||||
name="analytic_distribution"
|
||||
widget="analytic_distribution"
|
||||
required="1"
|
||||
/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_account_analytic_distribution_manual_search" model="ir.ui.view">
|
||||
<field name="name">view.account.analytic.distribution.manual.search</field>
|
||||
<field name="model">account.analytic.distribution.manual</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name" />
|
||||
<filter
|
||||
name="archived"
|
||||
string="Archived"
|
||||
domain="[('active', '=', False)]"
|
||||
/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record
|
||||
id="action_account_analytic_distribution_manual"
|
||||
model="ir.actions.act_window"
|
||||
>
|
||||
<field name="name">Manual Analytic Distributions</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">account.analytic.distribution.manual</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[]</field>
|
||||
<field name="context">{}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Add a new Manual Analytic Distributions
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
<menuitem
|
||||
id="account_analytic_distribution_manual_menu"
|
||||
name="Manual Analytic Distributions"
|
||||
action="action_account_analytic_distribution_manual"
|
||||
groups="analytic.group_analytic_accounting"
|
||||
parent="account.menu_analytic_accounting"
|
||||
sequence="10"
|
||||
/>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<odoo>
|
||||
<record id="view_account_analytic_line_tree" model="ir.ui.view">
|
||||
<field name="name">account.analytic.line.tree</field>
|
||||
<field name="model">account.analytic.line</field>
|
||||
<field name="inherit_id" ref="analytic.view_account_analytic_line_tree" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="amount" position="after">
|
||||
<field name="manual_distribution_id" optional="hide" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_account_analytic_line_form" model="ir.ui.view">
|
||||
<field name="name">account.analytic.line.form</field>
|
||||
<field name="model">account.analytic.line</field>
|
||||
<field name="inherit_id" ref="analytic.view_account_analytic_line_form" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="account_id" position="after">
|
||||
<field name="manual_distribution_id" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
# Architecture
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
U[Users] -->|HTTP| V[Views and QWeb Templates]
|
||||
V --> C[Controllers]
|
||||
V --> W[Wizards – Transient Models]
|
||||
C --> M[Models and ORM]
|
||||
W --> M
|
||||
M --> R[Reports]
|
||||
DX[Data XML] --> M
|
||||
S[Security – ACLs and Groups] -. enforces .-> M
|
||||
|
||||
subgraph Account_analytic_distribution_manual Module - account_analytic_distribution_manual
|
||||
direction LR
|
||||
M:::layer
|
||||
W:::layer
|
||||
C:::layer
|
||||
V:::layer
|
||||
R:::layer
|
||||
S:::layer
|
||||
DX:::layer
|
||||
end
|
||||
|
||||
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
|
||||
```
|
||||
|
||||
Notes
|
||||
- Views include tree/form/kanban templates and report templates.
|
||||
- Controllers provide website/portal routes when present.
|
||||
- Wizards are UI flows implemented with `models.TransientModel`.
|
||||
- Data XML loads data/demo records; Security defines groups and access.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Configuration
|
||||
|
||||
Refer to Odoo settings for account_analytic_distribution_manual. Configure related models, access rights, and options as needed.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Controllers
|
||||
|
||||
This module does not define custom HTTP controllers.
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Dependencies
|
||||
|
||||
This addon depends on:
|
||||
|
||||
- [account](../../odoo-bringout-oca-ocb-account)
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
# FAQ
|
||||
|
||||
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
|
||||
- Q: How to enable? A: Start server with --addon account_analytic_distribution_manual or install in UI.
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Install
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-oca-account-analytic-account_analytic_distribution_manual"
|
||||
# or
|
||||
uv pip install odoo-bringout-oca-account-analytic-account_analytic_distribution_manual"
|
||||
```
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# Models
|
||||
|
||||
Detected core models and extensions in account_analytic_distribution_manual.
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class account_analytic_distribution_manual
|
||||
class account_analytic_line
|
||||
class account_move_line
|
||||
class analytic_mixin
|
||||
class base
|
||||
```
|
||||
|
||||
Notes
|
||||
- Classes show model technical names; fields omitted for brevity.
|
||||
- Items listed under _inherit are extensions of existing models.
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Overview
|
||||
|
||||
Packaged Odoo addon: account_analytic_distribution_manual. Provides features documented in upstream Odoo 16 under this addon.
|
||||
|
||||
- Source: OCA/OCB 16.0, addon account_analytic_distribution_manual
|
||||
- License: LGPL-3
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Reports
|
||||
|
||||
This module does not define custom reports.
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
# Security
|
||||
|
||||
Access control and security definitions in account_analytic_distribution_manual.
|
||||
|
||||
## Access Control Lists (ACLs)
|
||||
|
||||
Model access permissions defined in:
|
||||
- **[ir.model.access.csv](../account_analytic_distribution_manual/security/ir.model.access.csv)**
|
||||
- 2 model access rules
|
||||
|
||||
## Record Rules
|
||||
|
||||
Row-level security rules defined in:
|
||||
|
||||
## Security Groups & Configuration
|
||||
|
||||
Security groups and permissions defined in:
|
||||
- **[analytic_security.xml](../account_analytic_distribution_manual/security/analytic_security.xml)**
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "Security Layers"
|
||||
A[Users] --> B[Groups]
|
||||
B --> C[Access Control Lists]
|
||||
C --> D[Models]
|
||||
B --> E[Record Rules]
|
||||
E --> F[Individual Records]
|
||||
end
|
||||
```
|
||||
|
||||
Security files overview:
|
||||
- **[analytic_security.xml](../account_analytic_distribution_manual/security/analytic_security.xml)**
|
||||
- Security groups, categories, and XML-based rules
|
||||
- **[ir.model.access.csv](../account_analytic_distribution_manual/security/ir.model.access.csv)**
|
||||
- Model access permissions (CRUD rights)
|
||||
|
||||
Notes
|
||||
- Access Control Lists define which groups can access which models
|
||||
- Record Rules provide row-level security (filter records by user/group)
|
||||
- Security groups organize users and define permission sets
|
||||
- All security is enforced at the ORM level by Odoo
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Troubleshooting
|
||||
|
||||
- Ensure Python and Odoo environment matches repo guidance.
|
||||
- Check database connectivity and logs if startup fails.
|
||||
- Validate that dependent addons listed in DEPENDENCIES.md are installed.
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Usage
|
||||
|
||||
Start Odoo including this addon (from repo root):
|
||||
|
||||
```bash
|
||||
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon account_analytic_distribution_manual
|
||||
```
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Wizards
|
||||
|
||||
This module does not include UI wizards.
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
[project]
|
||||
name = "odoo-bringout-oca-account-analytic-account_analytic_distribution_manual"
|
||||
version = "16.0.0"
|
||||
description = "Account analytic distribution manual - Account analytic distribution manual"
|
||||
authors = [
|
||||
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
|
||||
]
|
||||
dependencies = [
|
||||
"odoo-bringout-oca-ocb-account>=16.0.0",
|
||||
"requests>=2.25.1"
|
||||
]
|
||||
readme = "README.md"
|
||||
requires-python = ">= 3.11"
|
||||
classifiers = [
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Intended Audience :: Developers",
|
||||
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Topic :: Office/Business",
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
homepage = "https://github.com/bringout/0"
|
||||
repository = "https://github.com/bringout/0"
|
||||
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[tool.hatch.metadata]
|
||||
allow-direct-references = true
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["account_analytic_distribution_manual"]
|
||||
|
||||
[tool.rye]
|
||||
managed = true
|
||||
dev-dependencies = [
|
||||
"pytest>=8.4.1",
|
||||
]
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
# Account Analytic Document Date
|
||||
|
||||
Odoo addon: account_analytic_document_date
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-oca-account-analytic-account_analytic_document_date
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
- account
|
||||
- account_reconcile_oca
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: Account Analytic Document Date
|
||||
- **Version**: 16.0.1.0.1
|
||||
- **Category**: N/A
|
||||
- **License**: AGPL-3
|
||||
- **Installable**: True
|
||||
|
||||
## Source
|
||||
|
||||
Based on [OCA/account-analytic](https://github.com/OCA/account-analytic) branch 16.0, addon `account_analytic_document_date`.
|
||||
|
||||
## License
|
||||
|
||||
This package maintains the original AGPL-3 license from the upstream Odoo project.
|
||||
|
||||
## Documentation
|
||||
|
||||
- Overview: doc/OVERVIEW.md
|
||||
- Architecture: doc/ARCHITECTURE.md
|
||||
- Models: doc/MODELS.md
|
||||
- Controllers: doc/CONTROLLERS.md
|
||||
- Wizards: doc/WIZARDS.md
|
||||
- Install: doc/INSTALL.md
|
||||
- Usage: doc/USAGE.md
|
||||
- Configuration: doc/CONFIGURATION.md
|
||||
- Dependencies: doc/DEPENDENCIES.md
|
||||
- Troubleshooting: doc/TROUBLESHOOTING.md
|
||||
- FAQ: doc/FAQ.md
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
==============================
|
||||
Account Analytic Document Date
|
||||
==============================
|
||||
|
||||
..
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! source digest: sha256:f7d3ed41fa11fc02c75df2609b7382f50a569a28d3fa6bfb484c8af25dbfe829
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
||||
:target: https://odoo-community.org/page/development-status
|
||||
:alt: Beta
|
||||
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
|
||||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||
:alt: License: AGPL-3
|
||||
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--analytic-lightgray.png?logo=github
|
||||
:target: https://github.com/OCA/account-analytic/tree/16.0/account_analytic_document_date
|
||||
:alt: OCA/account-analytic
|
||||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
||||
:target: https://translation.odoo-community.org/projects/account-analytic-16-0/account-analytic-16-0-account_analytic_document_date
|
||||
:alt: Translate me on Weblate
|
||||
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
|
||||
:target: https://runboat.odoo-community.org/builds?repo=OCA/account-analytic&target_branch=16.0
|
||||
:alt: Try me on Runboat
|
||||
|
||||
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||
|
||||
The module introduces a new field in the accounting records to specify
|
||||
the "Accrual Date" for income and expenses. This field is crucial for
|
||||
accurately tracking when the revenue or expense is earned or incurred,
|
||||
regardless of the invoice creation date.
|
||||
|
||||
For instance, if an invoice is created in December but refers to sales
|
||||
made in November, the Accrual Date allows us to reflect this correctly
|
||||
in our accounting records. This ensures compliance with accrual-based
|
||||
accounting principles and provides better insights into the financial
|
||||
period to which transactions belong.
|
||||
|
||||
This feature is particularly valuable for businesses that need to
|
||||
differentiate between the accounting period of transaction occurrence
|
||||
and the timing of document issuance.
|
||||
|
||||
**Table of contents**
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
1. **Set Document Date on Invoice:**
|
||||
|
||||
- Navigate to the invoice and set the analytic document date.
|
||||
- If the analytic document date is not set, it will automatically be
|
||||
assigned the invoice date upon confirmation.
|
||||
|
||||
2. **Analytic Line Generation:**
|
||||
|
||||
- If any line has analytic information, the generated analytic entry
|
||||
will inherit the analytic document date.
|
||||
|
||||
3. **Setting Document Date in Reconcile View:**
|
||||
|
||||
- You can also set the analytic document date from the reconciliation
|
||||
view, but this option is available only during manual
|
||||
reconciliation.
|
||||
|
||||
Bug Tracker
|
||||
===========
|
||||
|
||||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-analytic/issues>`_.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
||||
`feedback <https://github.com/OCA/account-analytic/issues/new?body=module:%20account_analytic_document_date%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
|
||||
Do not contact contributors directly about support or help with technical issues.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Authors
|
||||
-------
|
||||
|
||||
* APSL-Nagarro
|
||||
|
||||
Contributors
|
||||
------------
|
||||
|
||||
- ``APSL - Nagarro <https://apsl.tech>``\ \_\_:
|
||||
|
||||
- Miquel Pascual
|
||||
- Bernat Obrador
|
||||
|
||||
Maintainers
|
||||
-----------
|
||||
|
||||
This module is maintained by the OCA.
|
||||
|
||||
.. image:: https://odoo-community.org/logo.png
|
||||
:alt: Odoo Community Association
|
||||
:target: https://odoo-community.org
|
||||
|
||||
OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||
mission is to support the collaborative development of Odoo features and
|
||||
promote its widespread use.
|
||||
|
||||
.. |maintainer-mpascuall| image:: https://github.com/mpascuall.png?size=40px
|
||||
:target: https://github.com/mpascuall
|
||||
:alt: mpascuall
|
||||
.. |maintainer-BernatObrador| image:: https://github.com/BernatObrador.png?size=40px
|
||||
:target: https://github.com/BernatObrador
|
||||
:alt: BernatObrador
|
||||
|
||||
Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
|
||||
|
||||
|maintainer-mpascuall| |maintainer-BernatObrador|
|
||||
|
||||
This module is part of the `OCA/account-analytic <https://github.com/OCA/account-analytic/tree/16.0/account_analytic_document_date>`_ project on GitHub.
|
||||
|
||||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
from . import models
|
||||
from .hooks import post_init_hook
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
# Copyright 2024 (APSL - Nagarro) Miquel Pascual, Bernat Obrador
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
{
|
||||
"name": "Account Analytic Document Date",
|
||||
"summary": "Account Analytic Document Date",
|
||||
"version": "16.0.1.0.1",
|
||||
"website": "https://github.com/OCA/account-analytic",
|
||||
"author": "APSL-Nagarro, Odoo Community Association (OCA)",
|
||||
"maintainers": ["mpascuall", "BernatObrador"],
|
||||
"license": "AGPL-3",
|
||||
"application": False,
|
||||
"installable": True,
|
||||
"depends": ["account", "account_reconcile_oca"],
|
||||
"data": [
|
||||
"views/account_analytic_line_views.xml",
|
||||
"views/account_bank_statement_line_views.xml",
|
||||
"views/account_move.xml",
|
||||
],
|
||||
"post_init_hook": "post_init_hook",
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
# Copyright 2024 (APSL - Nagarro) Miquel Pascual, Bernat Obrador
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
|
||||
def post_init_hook(cr, registry):
|
||||
cr.execute(
|
||||
"""
|
||||
UPDATE account_move
|
||||
SET analytic_document_date = invoice_date
|
||||
WHERE analytic_document_date IS NULL
|
||||
"""
|
||||
)
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_analytic_document_date
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_bank_statement_line__analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_move__analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_payment__analytic_document_date
|
||||
msgid "Analytic Document Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_analytic_line
|
||||
msgid "Analytic Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_bank_statement_line
|
||||
msgid "Bank Statement Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_analytic_line__document_date
|
||||
msgid "Document Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_move
|
||||
msgid "Journal Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_analytic_document_date
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_bank_statement_line__analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_move__analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_payment__analytic_document_date
|
||||
msgid "Analytic Document Date"
|
||||
msgstr "Analitički datum dokumenta"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_analytic_line
|
||||
msgid "Analytic Line"
|
||||
msgstr "Analitička stavka"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_bank_statement_line
|
||||
msgid "Bank Statement Line"
|
||||
msgstr "Stavka izvoda banke"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_analytic_line__document_date
|
||||
msgid "Document Date"
|
||||
msgstr "Datum dokumenta"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_move
|
||||
msgid "Journal Entry"
|
||||
msgstr "Žurnal"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Stavka žurnala"
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_analytic_document_date
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-12-27 08:52+0000\n"
|
||||
"PO-Revision-Date: 2024-12-27 08:52+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_bank_statement_line__analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_move__analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_payment__analytic_document_date
|
||||
msgid "Analytic Document Date"
|
||||
msgstr "Data del Document Analític"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_analytic_line
|
||||
msgid "Analytic Line"
|
||||
msgstr "Línia analítica"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_bank_statement_line
|
||||
msgid "Bank Statement Line"
|
||||
msgstr "Línea d'extracte bancari"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_analytic_line__document_date
|
||||
msgid "Document Date"
|
||||
msgstr "Data del Document"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_move
|
||||
msgid "Journal Entry"
|
||||
msgstr "Assentament comptable"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Element del diari"
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_analytic_document_date
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-12-27 08:53+0000\n"
|
||||
"PO-Revision-Date: 2024-12-27 08:53+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_bank_statement_line__analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_move__analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_payment__analytic_document_date
|
||||
msgid "Analytic Document Date"
|
||||
msgstr "Fecha del Documento Analítico"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_analytic_line
|
||||
msgid "Analytic Line"
|
||||
msgstr "Línea analítica"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_bank_statement_line
|
||||
msgid "Bank Statement Line"
|
||||
msgstr "Línea de extracto bancario"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_analytic_line__document_date
|
||||
msgid "Document Date"
|
||||
msgstr "Fecha del Documento"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_move
|
||||
msgid "Journal Entry"
|
||||
msgstr "Asiento contable"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Apunte contable"
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_analytic_document_date
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2024-12-31 16:06+0000\n"
|
||||
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.6.2\n"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_bank_statement_line__analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_move__analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_payment__analytic_document_date
|
||||
msgid "Analytic Document Date"
|
||||
msgstr "Data documento analitico"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_analytic_line
|
||||
msgid "Analytic Line"
|
||||
msgstr "Riga analitica"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_bank_statement_line
|
||||
msgid "Bank Statement Line"
|
||||
msgstr "Riga estratto conto"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model.fields,field_description:account_analytic_document_date.field_account_analytic_line__document_date
|
||||
msgid "Document Date"
|
||||
msgstr "Data documento"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_move
|
||||
msgid "Journal Entry"
|
||||
msgstr "Registrazione contabile"
|
||||
|
||||
#. module: account_analytic_document_date
|
||||
#: model:ir.model,name:account_analytic_document_date.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Movimento contabile"
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
from . import account_move_line
|
||||
from . import account_analytic_line
|
||||
from . import account_move
|
||||
from . import account_bank_statement_line
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
# Copyright 2024 (APSL - Nagarro) Miquel Pascual, Bernat Obrador
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class AccountAnalyticLine(models.Model):
|
||||
_inherit = "account.analytic.line"
|
||||
|
||||
document_date = fields.Date()
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# Copyright 2024 (APSL - Nagarro) Miquel Pascual, Bernat Obrador
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class AccountBankStatementLine(models.Model):
|
||||
_inherit = "account.bank.statement.line"
|
||||
|
||||
analytic_document_date = fields.Date(
|
||||
"Analytic Document Date",
|
||||
related="move_id.analytic_document_date",
|
||||
readonly=False,
|
||||
)
|
||||
|
||||
def reconcile_bank_line(self):
|
||||
self.ensure_one()
|
||||
res = super().reconcile_bank_line()
|
||||
self.move_id.analytic_document_date = self.analytic_document_date
|
||||
return res
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
# Copyright 2024 (APSL - Nagarro) Miquel Pascual, Bernat Obrador
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class AccountMove(models.Model):
|
||||
_inherit = "account.move"
|
||||
|
||||
analytic_document_date = fields.Date()
|
||||
|
||||
@api.onchange("invoice_date", "date")
|
||||
def _onchange_invoice_date(self):
|
||||
for record in self:
|
||||
if not record.analytic_document_date:
|
||||
record.analytic_document_date = record.invoice_date or record.date
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
|
||||
for vals in vals_list:
|
||||
analytic_document_date = (
|
||||
vals.get("analytic_document_date")
|
||||
or vals.get("invoice_date")
|
||||
or vals.get("date")
|
||||
)
|
||||
vals["analytic_document_date"] = analytic_document_date
|
||||
|
||||
return super().create(vals_list)
|
||||
|
||||
def action_post(self):
|
||||
res = super().action_post()
|
||||
for record in self:
|
||||
if not record.analytic_document_date:
|
||||
record.analytic_document_date = record.invoice_date
|
||||
return res
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# Copyright 2024 (APSL - Nagarro) Miquel Pascual, Bernat Obrador
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
from odoo import models
|
||||
|
||||
|
||||
class AccountMoveLine(models.Model):
|
||||
_inherit = "account.move.line"
|
||||
|
||||
def _prepare_analytic_lines(self):
|
||||
vals = super()._prepare_analytic_lines()
|
||||
for val in vals:
|
||||
if self.move_id.analytic_document_date:
|
||||
val.update({"document_date": self.move_id.analytic_document_date})
|
||||
elif self.move_id.invoice_date:
|
||||
val.update({"document_date": self.move_id.invoice_date})
|
||||
else:
|
||||
val.update({"document_date": self.move_id.date})
|
||||
return vals
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
- `APSL - Nagarro <https://apsl.tech>`__:
|
||||
|
||||
- Miquel Pascual
|
||||
- Bernat Obrador
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
The module introduces a new field in the accounting records to specify the "Accrual Date" for income and expenses. This field is crucial for accurately tracking when the revenue or expense is earned or incurred, regardless of the invoice creation date.
|
||||
|
||||
For instance, if an invoice is created in December but refers to sales made in November, the Accrual Date allows us to reflect this correctly in our accounting records. This ensures compliance with accrual-based accounting principles and provides better insights into the financial period to which transactions belong.
|
||||
|
||||
This feature is particularly valuable for businesses that need to differentiate between the accounting period of transaction occurrence and the timing of document issuance.
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
1. **Set Document Date on Invoice:**
|
||||
- Navigate to the invoice and set the analytic document date.
|
||||
- If the analytic document date is not set, it will automatically be assigned the invoice date upon confirmation.
|
||||
|
||||
2. **Analytic Line Generation:**
|
||||
- If any line has analytic information, the generated analytic entry will inherit the analytic document date.
|
||||
|
||||
3. **Setting Document Date in Reconcile View:**
|
||||
- You can also set the analytic document date from the reconciliation view, but this option is available only during manual reconciliation.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue