mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-18 03:12:04 +02:00
Initial commit: OCA Technical packages (595 packages)
This commit is contained in:
commit
2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions
641
README.md
Normal file
641
README.md
Normal file
|
|
@ -0,0 +1,641 @@
|
||||||
|
# OCA Technical
|
||||||
|
|
||||||
|
This repository contains **595** OCA packages for technical.
|
||||||
|
|
||||||
|
## Packages Included (595 packages)
|
||||||
|
|
||||||
|
- **odoo-bringout-oca-account-closing-account_cutoff_accrual_order_base** - From account: closing_account_cutoff_accrual_order_base
|
||||||
|
- **odoo-bringout-oca-account-closing-account_cutoff_accrual_order_stock_base** - From account: closing_account_cutoff_accrual_order_stock_base
|
||||||
|
- **odoo-bringout-oca-account-closing-account_cutoff_accrual_purchase** - From account: closing_account_cutoff_accrual_purchase
|
||||||
|
- **odoo-bringout-oca-account-closing-account_cutoff_accrual_purchase_stock** - From account: closing_account_cutoff_accrual_purchase_stock
|
||||||
|
- **odoo-bringout-oca-account-closing-account_cutoff_accrual_sale** - From account: closing_account_cutoff_accrual_sale
|
||||||
|
- **odoo-bringout-oca-account-closing-account_cutoff_accrual_sale_stock** - From account: closing_account_cutoff_accrual_sale_stock
|
||||||
|
- **odoo-bringout-oca-account-closing-account_cutoff_accrual_sale_stock_delivery** - From account: closing_account_cutoff_accrual_sale_stock_delivery
|
||||||
|
- **odoo-bringout-oca-account-closing-account_cutoff_accrual_subscription** - From account: closing_account_cutoff_accrual_subscription
|
||||||
|
- **odoo-bringout-oca-account-closing-account_cutoff_base** - From account: closing_account_cutoff_base
|
||||||
|
- **odoo-bringout-oca-account-closing-account_cutoff_picking** - From account: closing_account_cutoff_picking
|
||||||
|
- **odoo-bringout-oca-account-closing-account_cutoff_start_end_dates** - From account: closing_account_cutoff_start_end_dates
|
||||||
|
- **odoo-bringout-oca-account-closing-account_fiscal_year_closing** - From account: closing_account_fiscal_year_closing
|
||||||
|
- **odoo-bringout-oca-account-closing-account_invoice_start_end_dates** - From account: closing_account_invoice_start_end_dates
|
||||||
|
- **odoo-bringout-oca-account-closing-account_invoice_start_end_dates_move** - From account: closing_account_invoice_start_end_dates_move
|
||||||
|
- **odoo-bringout-oca-account-closing-account_multicurrency_revaluation** - From account: closing_account_multicurrency_revaluation
|
||||||
|
- **odoo-bringout-oca-account-invoice-reporting-account_comment_template** - From account: invoice_reporting_account_comment_template
|
||||||
|
- **odoo-bringout-oca-account-invoice-reporting-account_invoice_line_report** - From account: invoice_reporting_account_invoice_line_report
|
||||||
|
- **odoo-bringout-oca-account-invoice-reporting-account_invoice_production_lot** - From account: invoice_reporting_account_invoice_production_lot
|
||||||
|
- **odoo-bringout-oca-account-invoice-reporting-account_invoice_report_due_list** - From account: invoice_reporting_account_invoice_report_due_list
|
||||||
|
- **odoo-bringout-oca-account-invoice-reporting-account_invoice_report_grouped_by_picking** - From account: invoice_reporting_account_invoice_report_grouped_by_picking
|
||||||
|
- **odoo-bringout-oca-account-invoice-reporting-account_invoice_report_header_repeater** - From account: invoice_reporting_account_invoice_report_header_repeater
|
||||||
|
- **odoo-bringout-oca-account-invoice-reporting-account_invoice_report_lot_expiration_date** - From account: invoice_reporting_account_invoice_report_lot_expiration_date
|
||||||
|
- **odoo-bringout-oca-account-invoice-reporting-account_invoice_report_payment_info** - From account: invoice_reporting_account_invoice_report_payment_info
|
||||||
|
- **odoo-bringout-oca-account-invoice-reporting-account_invoice_report_product_sticker** - From account: invoice_reporting_account_invoice_report_product_sticker
|
||||||
|
- **odoo-bringout-oca-account-invoice-reporting-account_invoice_report_salesperson** - From account: invoice_reporting_account_invoice_report_salesperson
|
||||||
|
- **odoo-bringout-oca-account-invoice-reporting-account_reporting_volume** - From account: invoice_reporting_account_reporting_volume
|
||||||
|
- **odoo-bringout-oca-account-invoice-reporting-account_reporting_weight** - From account: invoice_reporting_account_reporting_weight
|
||||||
|
- **odoo-bringout-oca-account-invoice-reporting-partner_time_to_pay** - From account: invoice_reporting_partner_time_to_pay
|
||||||
|
- **odoo-bringout-oca-automation-automation_oca** - From automation: automation_oca
|
||||||
|
- **odoo-bringout-oca-brand-account_brand** - From brand: account_brand
|
||||||
|
- **odoo-bringout-oca-brand-account_invoice_bank_brand** - From brand: account_invoice_bank_brand
|
||||||
|
- **odoo-bringout-oca-brand-account_payment_mode_brand** - From brand: account_payment_mode_brand
|
||||||
|
- **odoo-bringout-oca-brand-analytic_brand** - From brand: analytic_brand
|
||||||
|
- **odoo-bringout-oca-brand-brand** - From brand: brand
|
||||||
|
- **odoo-bringout-oca-brand-contract_brand** - From brand: contract_brand
|
||||||
|
- **odoo-bringout-oca-brand-contract_forecast_brand** - From brand: contract_forecast_brand
|
||||||
|
- **odoo-bringout-oca-brand-partner_brand** - From brand: partner_brand
|
||||||
|
- **odoo-bringout-oca-brand-product_brand** - From brand: product_brand
|
||||||
|
- **odoo-bringout-oca-brand-product_brand_mrp** - From brand: product_brand_mrp
|
||||||
|
- **odoo-bringout-oca-brand-product_brand_purchase** - From brand: product_brand_purchase
|
||||||
|
- **odoo-bringout-oca-brand-product_brand_tag** - From brand: product_brand_tag
|
||||||
|
- **odoo-bringout-oca-brand-product_contract_brand** - From brand: product_contract_brand
|
||||||
|
- **odoo-bringout-oca-brand-sale_brand** - From brand: sale_brand
|
||||||
|
- **odoo-bringout-oca-brand-sale_payment_mode_brand** - From brand: sale_payment_mode_brand
|
||||||
|
- **odoo-bringout-oca-brand-stock_brand** - From brand: stock_brand
|
||||||
|
- **odoo-bringout-oca-connector-component** - From connector: component
|
||||||
|
- **odoo-bringout-oca-connector-component_event** - From connector: component_event
|
||||||
|
- **odoo-bringout-oca-connector-connector** - From connector: connector
|
||||||
|
- **odoo-bringout-oca-connector-connector_base_product** - From connector: connector_base_product
|
||||||
|
- **odoo-bringout-oca-connector-interfaces-connector_importer** - From connector: interfaces_connector_importer
|
||||||
|
- **odoo-bringout-oca-connector-interfaces-connector_importer_product** - From connector: interfaces_connector_importer_product
|
||||||
|
- **odoo-bringout-oca-connector-test_component** - From connector: test_component
|
||||||
|
- **odoo-bringout-oca-connector-test_connector** - From connector: test_connector
|
||||||
|
- **odoo-bringout-oca-crm-crm_claim** - From crm: crm_claim
|
||||||
|
- **odoo-bringout-oca-crm-crm_claim_code** - From crm: crm_claim_code
|
||||||
|
- **odoo-bringout-oca-crm-crm_claim_type** - From crm: crm_claim_type
|
||||||
|
- **odoo-bringout-oca-crm-crm_date_deadline_required** - From crm: crm_date_deadline_required
|
||||||
|
- **odoo-bringout-oca-crm-crm_exception** - From crm: crm_exception
|
||||||
|
- **odoo-bringout-oca-crm-crm_industry** - From crm: crm_industry
|
||||||
|
- **odoo-bringout-oca-crm-crm_lead_code** - From crm: crm_lead_code
|
||||||
|
- **odoo-bringout-oca-crm-crm_lead_currency** - From crm: crm_lead_currency
|
||||||
|
- **odoo-bringout-oca-crm-crm_lead_firstname** - From crm: crm_lead_firstname
|
||||||
|
- **odoo-bringout-oca-crm-crm_lead_product** - From crm: crm_lead_product
|
||||||
|
- **odoo-bringout-oca-crm-crm_lead_search_archive** - From crm: crm_lead_search_archive
|
||||||
|
- **odoo-bringout-oca-crm-crm_lead_to_task** - From crm: crm_lead_to_task
|
||||||
|
- **odoo-bringout-oca-crm-crm_lead_vat** - From crm: crm_lead_vat
|
||||||
|
- **odoo-bringout-oca-crm-crm_location** - From crm: crm_location
|
||||||
|
- **odoo-bringout-oca-crm-crm_location_nuts** - From crm: crm_location_nuts
|
||||||
|
- **odoo-bringout-oca-crm-crm_partner_assign** - From crm: crm_partner_assign
|
||||||
|
- **odoo-bringout-oca-crm-crm_partner_required** - From crm: crm_partner_required
|
||||||
|
- **odoo-bringout-oca-crm-crm_phonecall** - From crm: crm_phonecall
|
||||||
|
- **odoo-bringout-oca-crm-crm_project_create** - From crm: crm_project_create
|
||||||
|
- **odoo-bringout-oca-crm-crm_project_task** - From crm: crm_project_task
|
||||||
|
- **odoo-bringout-oca-crm-crm_salesperson_planner** - From crm: crm_salesperson_planner
|
||||||
|
- **odoo-bringout-oca-crm-crm_salesperson_planner_sale** - From crm: crm_salesperson_planner_sale
|
||||||
|
- **odoo-bringout-oca-crm-crm_security_group** - From crm: crm_security_group
|
||||||
|
- **odoo-bringout-oca-crm-crm_stage_probability** - From crm: crm_stage_probability
|
||||||
|
- **odoo-bringout-oca-crm-crm_won_restrict_per_stage** - From crm: crm_won_restrict_per_stage
|
||||||
|
- **odoo-bringout-oca-crm-marketing_crm_partner** - From crm: marketing_crm_partner
|
||||||
|
- **odoo-bringout-oca-data-protection-privacy** - From data: protection_privacy
|
||||||
|
- **odoo-bringout-oca-data-protection-privacy_consent** - From data: protection_privacy_consent
|
||||||
|
- **odoo-bringout-oca-ddmrp-ddmrp** - From ddmrp: ddmrp
|
||||||
|
- **odoo-bringout-oca-ddmrp-ddmrp_adjustment** - From ddmrp: ddmrp_adjustment
|
||||||
|
- **odoo-bringout-oca-ddmrp-ddmrp_chatter** - From ddmrp: ddmrp_chatter
|
||||||
|
- **odoo-bringout-oca-ddmrp-ddmrp_cron_actions_as_job** - From ddmrp: ddmrp_cron_actions_as_job
|
||||||
|
- **odoo-bringout-oca-ddmrp-ddmrp_exclude_moves_adu_calc** - From ddmrp: ddmrp_exclude_moves_adu_calc
|
||||||
|
- **odoo-bringout-oca-ddmrp-ddmrp_exclude_moves_adu_calc_sales** - From ddmrp: ddmrp_exclude_moves_adu_calc_sales
|
||||||
|
- **odoo-bringout-oca-ddmrp-ddmrp_history** - From ddmrp: ddmrp_history
|
||||||
|
- **odoo-bringout-oca-ddmrp-ddmrp_product_replace** - From ddmrp: ddmrp_product_replace
|
||||||
|
- **odoo-bringout-oca-ddmrp-ddmrp_report_part_flow_index** - From ddmrp: ddmrp_report_part_flow_index
|
||||||
|
- **odoo-bringout-oca-ddmrp-ddmrp_sale** - From ddmrp: ddmrp_sale
|
||||||
|
- **odoo-bringout-oca-ddmrp-ddmrp_sale_dropshipping** - From ddmrp: ddmrp_sale_dropshipping
|
||||||
|
- **odoo-bringout-oca-ddmrp-ddmrp_warning** - From ddmrp: ddmrp_warning
|
||||||
|
- **odoo-bringout-oca-ddmrp-stock_buffer_route** - From ddmrp: stock_buffer_route
|
||||||
|
- **odoo-bringout-oca-ddmrp-stock_buffer_sales_analysis** - From ddmrp: stock_buffer_sales_analysis
|
||||||
|
- **odoo-bringout-oca-dms-account_dms_field** - From dms: account_dms_field
|
||||||
|
- **odoo-bringout-oca-dms-dms** - From dms: dms
|
||||||
|
- **odoo-bringout-oca-dms-dms_attachment_link** - From dms: dms_attachment_link
|
||||||
|
- **odoo-bringout-oca-dms-dms_auto_classification** - From dms: dms_auto_classification
|
||||||
|
- **odoo-bringout-oca-dms-dms_field** - From dms: dms_field
|
||||||
|
- **odoo-bringout-oca-dms-dms_field_auto_classification** - From dms: dms_field_auto_classification
|
||||||
|
- **odoo-bringout-oca-dms-dms_storage** - From dms: dms_storage
|
||||||
|
- **odoo-bringout-oca-dms-dms_user_role** - From dms: dms_user_role
|
||||||
|
- **odoo-bringout-oca-dms-hr_dms_field** - From dms: hr_dms_field
|
||||||
|
- **odoo-bringout-oca-dms-web_editor_media_dialog_dms** - From dms: web_editor_media_dialog_dms
|
||||||
|
- **odoo-bringout-oca-geospatial-base_geoengine** - From geospatial: base_geoengine
|
||||||
|
- **odoo-bringout-oca-geospatial-base_geoengine_demo** - From geospatial: base_geoengine_demo
|
||||||
|
- **odoo-bringout-oca-geospatial-base_geolocalize_company** - From geospatial: base_geolocalize_company
|
||||||
|
- **odoo-bringout-oca-geospatial-geoengine_base_geolocalize** - From geospatial: geoengine_base_geolocalize
|
||||||
|
- **odoo-bringout-oca-geospatial-geoengine_partner** - From geospatial: geoengine_partner
|
||||||
|
- **odoo-bringout-oca-geospatial-web_leaflet_lib** - From geospatial: web_leaflet_lib
|
||||||
|
- **odoo-bringout-oca-geospatial-web_view_leaflet_map** - From geospatial: web_view_leaflet_map
|
||||||
|
- **odoo-bringout-oca-geospatial-web_view_leaflet_map_partner** - From geospatial: web_view_leaflet_map_partner
|
||||||
|
- **odoo-bringout-oca-geospatial-website_geoengine** - From geospatial: website_geoengine
|
||||||
|
- **odoo-bringout-oca-geospatial-website_geoengine_store_locator** - From geospatial: website_geoengine_store_locator
|
||||||
|
- **odoo-bringout-oca-hack-payroll** - From hack: payroll
|
||||||
|
- **odoo-bringout-oca-hr-attendance-hr_attendance_autoclose** - From hr: attendance_hr_attendance_autoclose
|
||||||
|
- **odoo-bringout-oca-hr-attendance-hr_attendance_calendar_view** - From hr: attendance_hr_attendance_calendar_view
|
||||||
|
- **odoo-bringout-oca-hr-attendance-hr_attendance_geolocation** - From hr: attendance_hr_attendance_geolocation
|
||||||
|
- **odoo-bringout-oca-hr-attendance-hr_attendance_modification_tracking** - From hr: attendance_hr_attendance_modification_tracking
|
||||||
|
- **odoo-bringout-oca-hr-attendance-hr_attendance_reason** - From hr: attendance_hr_attendance_reason
|
||||||
|
- **odoo-bringout-oca-hr-attendance-hr_attendance_report_theoretical_time** - From hr: attendance_hr_attendance_report_theoretical_time
|
||||||
|
- **odoo-bringout-oca-hr-attendance-hr_attendance_rfid** - From hr: attendance_hr_attendance_rfid
|
||||||
|
- **odoo-bringout-oca-hr-attendance-hr_birthday_welcome_message** - From hr: attendance_hr_birthday_welcome_message
|
||||||
|
- **odoo-bringout-oca-hr-attendance-hr_contract_update_overtime** - From hr: attendance_hr_contract_update_overtime
|
||||||
|
- **odoo-bringout-oca-hr-expense-hr_expense_advance_clearing** - From hr: expense_hr_expense_advance_clearing
|
||||||
|
- **odoo-bringout-oca-hr-expense-hr_expense_advance_clearing_sequence** - From hr: expense_hr_expense_advance_clearing_sequence
|
||||||
|
- **odoo-bringout-oca-hr-expense-hr_expense_cancel** - From hr: expense_hr_expense_cancel
|
||||||
|
- **odoo-bringout-oca-hr-expense-hr_expense_invoice** - From hr: expense_hr_expense_invoice
|
||||||
|
- **odoo-bringout-oca-hr-expense-hr_expense_journal** - From hr: expense_hr_expense_journal
|
||||||
|
- **odoo-bringout-oca-hr-expense-hr_expense_pay_to_vendor** - From hr: expense_hr_expense_pay_to_vendor
|
||||||
|
- **odoo-bringout-oca-hr-expense-hr_expense_payment** - From hr: expense_hr_expense_payment
|
||||||
|
- **odoo-bringout-oca-hr-expense-hr_expense_sequence** - From hr: expense_hr_expense_sequence
|
||||||
|
- **odoo-bringout-oca-hr-expense-hr_expense_sequence_option** - From hr: expense_hr_expense_sequence_option
|
||||||
|
- **odoo-bringout-oca-hr-expense-hr_expense_tier_validation** - From hr: expense_hr_expense_tier_validation
|
||||||
|
- **odoo-bringout-oca-hr-holidays-hr_holidays_auto_extend** - From hr: holidays_hr_holidays_auto_extend
|
||||||
|
- **odoo-bringout-oca-hr-holidays-hr_holidays_leave_auto_approve** - From hr: holidays_hr_holidays_leave_auto_approve
|
||||||
|
- **odoo-bringout-oca-hr-holidays-hr_holidays_natural_period** - From hr: holidays_hr_holidays_natural_period
|
||||||
|
- **odoo-bringout-oca-hr-holidays-hr_holidays_natural_period_public** - From hr: holidays_hr_holidays_natural_period_public
|
||||||
|
- **odoo-bringout-oca-hr-holidays-hr_holidays_public** - From hr: holidays_hr_holidays_public
|
||||||
|
- **odoo-bringout-oca-hr-holidays-hr_holidays_public_city** - From hr: holidays_hr_holidays_public_city
|
||||||
|
- **odoo-bringout-oca-hr-holidays-hr_holidays_settings** - From hr: holidays_hr_holidays_settings
|
||||||
|
- **odoo-bringout-oca-hr-holidays-hr_holidays_summary_email** - From hr: holidays_hr_holidays_summary_email
|
||||||
|
- **odoo-bringout-oca-hr-holidays-hr_leave_custom_hour_interval** - From hr: holidays_hr_leave_custom_hour_interval
|
||||||
|
- **odoo-bringout-oca-hr-holidays-hr_leave_type_code** - From hr: holidays_hr_leave_type_code
|
||||||
|
- **odoo-bringout-oca-hr-holidays-resource_leaves_geographic** - From hr: holidays_resource_leaves_geographic
|
||||||
|
- **odoo-bringout-oca-hr-hr_contract_employee_calendar_planning** - From hr: hr_contract_employee_calendar_planning
|
||||||
|
- **odoo-bringout-oca-hr-hr_contract_multi_job** - From hr: hr_contract_multi_job
|
||||||
|
- **odoo-bringout-oca-hr-hr_contract_reference** - From hr: hr_contract_reference
|
||||||
|
- **odoo-bringout-oca-hr-hr_course** - From hr: hr_course
|
||||||
|
- **odoo-bringout-oca-hr-hr_course_survey** - From hr: hr_course_survey
|
||||||
|
- **odoo-bringout-oca-hr-hr_department_code** - From hr: hr_department_code
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_age** - From hr: hr_employee_age
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_birth_name** - From hr: hr_employee_birth_name
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_birthday_mail** - From hr: hr_employee_birthday_mail
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_calendar_planning** - From hr: hr_employee_calendar_planning
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_digitized_signature** - From hr: hr_employee_digitized_signature
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_document** - From hr: hr_employee_document
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_document_from_applicant** - From hr: hr_employee_document_from_applicant
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_firstname** - From hr: hr_employee_firstname
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_group_overview_readonly** - From hr: hr_employee_group_overview_readonly
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_id** - From hr: hr_employee_id
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_language** - From hr: hr_employee_language
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_lastnames** - From hr: hr_employee_lastnames
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_medical_examination** - From hr: hr_employee_medical_examination
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_partner_external** - From hr: hr_employee_partner_external
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_phone_extension** - From hr: hr_employee_phone_extension
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_phone_pin** - From hr: hr_employee_phone_pin
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_ppe** - From hr: hr_employee_ppe
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_relative** - From hr: hr_employee_relative
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_service** - From hr: hr_employee_service
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_service_contract** - From hr: hr_employee_service_contract
|
||||||
|
- **odoo-bringout-oca-hr-hr_employee_ssn** - From hr: hr_employee_ssn
|
||||||
|
- **odoo-bringout-oca-hr-hr_holidays_team_manager** - From hr: hr_holidays_team_manager
|
||||||
|
- **odoo-bringout-oca-hr-hr_job_category** - From hr: hr_job_category
|
||||||
|
- **odoo-bringout-oca-hr-hr_org_chart_overview** - From hr: hr_org_chart_overview
|
||||||
|
- **odoo-bringout-oca-hr-hr_personal_equipment_request** - From hr: hr_personal_equipment_request
|
||||||
|
- **odoo-bringout-oca-hr-hr_personal_equipment_request_tier_validation** - From hr: hr_personal_equipment_request_tier_validation
|
||||||
|
- **odoo-bringout-oca-hr-hr_personal_equipment_stock** - From hr: hr_personal_equipment_stock
|
||||||
|
- **odoo-bringout-oca-hr-hr_personal_equipment_variant_configurator** - From hr: hr_personal_equipment_variant_configurator
|
||||||
|
- **odoo-bringout-oca-hr-hr_professional_category** - From hr: hr_professional_category
|
||||||
|
- **odoo-bringout-oca-hr-hr_recruitment_torecruit** - From hr: hr_recruitment_torecruit
|
||||||
|
- **odoo-bringout-oca-hr-resource_multi_week_calendar** - From hr: resource_multi_week_calendar
|
||||||
|
- **odoo-bringout-oca-iot-iot_amqp_oca** - From iot: iot_amqp_oca
|
||||||
|
- **odoo-bringout-oca-iot-iot_input_oca** - From iot: iot_input_oca
|
||||||
|
- **odoo-bringout-oca-iot-iot_key_employee_rfid** - From iot: iot_key_employee_rfid
|
||||||
|
- **odoo-bringout-oca-iot-iot_oca** - From iot: iot_oca
|
||||||
|
- **odoo-bringout-oca-iot-iot_output_oca** - From iot: iot_output_oca
|
||||||
|
- **odoo-bringout-oca-iot-iot_rule** - From iot: iot_rule
|
||||||
|
- **odoo-bringout-oca-iot-iot_template_oca** - From iot: iot_template_oca
|
||||||
|
- **odoo-bringout-oca-maintenance-base_maintenance** - From maintenance: base_maintenance
|
||||||
|
- **odoo-bringout-oca-maintenance-base_maintenance_config** - From maintenance: base_maintenance_config
|
||||||
|
- **odoo-bringout-oca-maintenance-base_maintenance_group** - From maintenance: base_maintenance_group
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_account** - From maintenance: maintenance_account
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_equipment_category_hierarchy** - From maintenance: maintenance_equipment_category_hierarchy
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_equipment_certification** - From maintenance: maintenance_equipment_certification
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_equipment_contract** - From maintenance: maintenance_equipment_contract
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_equipment_hierarchy** - From maintenance: maintenance_equipment_hierarchy
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_equipment_image** - From maintenance: maintenance_equipment_image
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_equipment_sequence** - From maintenance: maintenance_equipment_sequence
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_equipment_status** - From maintenance: maintenance_equipment_status
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_equipment_tags** - From maintenance: maintenance_equipment_tags
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_equipment_usage** - From maintenance: maintenance_equipment_usage
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_location** - From maintenance: maintenance_location
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_plan** - From maintenance: maintenance_plan
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_plan_activity** - From maintenance: maintenance_plan_activity
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_product** - From maintenance: maintenance_product
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_project** - From maintenance: maintenance_project
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_purchase** - From maintenance: maintenance_purchase
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_remote** - From maintenance: maintenance_remote
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_request_purchase** - From maintenance: maintenance_request_purchase
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_request_repair** - From maintenance: maintenance_request_repair
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_request_sequence** - From maintenance: maintenance_request_sequence
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_request_stage_transition** - From maintenance: maintenance_request_stage_transition
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_security** - From maintenance: maintenance_security
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_team_hierarchy** - From maintenance: maintenance_team_hierarchy
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_timesheet** - From maintenance: maintenance_timesheet
|
||||||
|
- **odoo-bringout-oca-maintenance-maintenance_timesheet_time_control** - From maintenance: maintenance_timesheet_time_control
|
||||||
|
- **odoo-bringout-oca-management-system-document_page_environment_manual** - From management: system_document_page_environment_manual
|
||||||
|
- **odoo-bringout-oca-management-system-document_page_environmental_aspect** - From management: system_document_page_environmental_aspect
|
||||||
|
- **odoo-bringout-oca-management-system-document_page_health_safety_manual** - From management: system_document_page_health_safety_manual
|
||||||
|
- **odoo-bringout-oca-management-system-document_page_procedure** - From management: system_document_page_procedure
|
||||||
|
- **odoo-bringout-oca-management-system-document_page_quality_manual** - From management: system_document_page_quality_manual
|
||||||
|
- **odoo-bringout-oca-management-system-document_page_work_instruction** - From management: system_document_page_work_instruction
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem** - From management: system_mgmtsystem
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_action** - From management: system_mgmtsystem_action
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_action_efficacy** - From management: system_mgmtsystem_action_efficacy
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_action_hazard** - From management: system_mgmtsystem_action_hazard
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_action_template** - From management: system_mgmtsystem_action_template
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_audit** - From management: system_mgmtsystem_audit
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_claim** - From management: system_mgmtsystem_claim
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_environment** - From management: system_mgmtsystem_environment
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_evaluation** - From management: system_mgmtsystem_evaluation
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_evaluation_hr** - From management: system_mgmtsystem_evaluation_hr
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_hazard** - From management: system_mgmtsystem_hazard
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_hazard_maintenance_equipment** - From management: system_mgmtsystem_hazard_maintenance_equipment
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_hazard_risk** - From management: system_mgmtsystem_hazard_risk
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_health_safety** - From management: system_mgmtsystem_health_safety
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_info_security_manual** - From management: system_mgmtsystem_info_security_manual
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_manual** - From management: system_mgmtsystem_manual
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_nonconformity** - From management: system_mgmtsystem_nonconformity
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_nonconformity_hazard** - From management: system_mgmtsystem_nonconformity_hazard
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_nonconformity_hr** - From management: system_mgmtsystem_nonconformity_hr
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_nonconformity_maintenance_equipment** - From management: system_mgmtsystem_nonconformity_maintenance_equipment
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_nonconformity_mrp** - From management: system_mgmtsystem_nonconformity_mrp
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_nonconformity_product** - From management: system_mgmtsystem_nonconformity_product
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_nonconformity_quality_control_oca** - From management: system_mgmtsystem_nonconformity_quality_control_oca
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_nonconformity_repair** - From management: system_mgmtsystem_nonconformity_repair
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_nonconformity_type** - From management: system_mgmtsystem_nonconformity_type
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_partner** - From management: system_mgmtsystem_partner
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_quality** - From management: system_mgmtsystem_quality
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_review** - From management: system_mgmtsystem_review
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_review_survey** - From management: system_mgmtsystem_review_survey
|
||||||
|
- **odoo-bringout-oca-management-system-mgmtsystem_survey** - From management: system_mgmtsystem_survey
|
||||||
|
- **odoo-bringout-oca-pos-pos_access_right** - From pos: pos_access_right
|
||||||
|
- **odoo-bringout-oca-pos-pos_auto_invoice** - From pos: pos_auto_invoice
|
||||||
|
- **odoo-bringout-oca-pos-pos_bypass_global_discount** - From pos: pos_bypass_global_discount
|
||||||
|
- **odoo-bringout-oca-pos-pos_cash_control_override** - From pos: pos_cash_control_override
|
||||||
|
- **odoo-bringout-oca-pos-pos_config_logo** - From pos: pos_config_logo
|
||||||
|
- **odoo-bringout-oca-pos-pos_container_deposit** - From pos: pos_container_deposit
|
||||||
|
- **odoo-bringout-oca-pos-pos_customer_comment** - From pos: pos_customer_comment
|
||||||
|
- **odoo-bringout-oca-pos-pos_customer_tree_view_vat** - From pos: pos_customer_tree_view_vat
|
||||||
|
- **odoo-bringout-oca-pos-pos_daily_sales_reports_category_only** - From pos: pos_daily_sales_reports_category_only
|
||||||
|
- **odoo-bringout-oca-pos-pos_default_partner** - From pos: pos_default_partner
|
||||||
|
- **odoo-bringout-oca-pos-pos_discount_all** - From pos: pos_discount_all
|
||||||
|
- **odoo-bringout-oca-pos-pos_edit_order_line** - From pos: pos_edit_order_line
|
||||||
|
- **odoo-bringout-oca-pos-pos_escpos_status** - From pos: pos_escpos_status
|
||||||
|
- **odoo-bringout-oca-pos-pos_financial_risk** - From pos: pos_financial_risk
|
||||||
|
- **odoo-bringout-oca-pos-pos_global_discount_in_line** - From pos: pos_global_discount_in_line
|
||||||
|
- **odoo-bringout-oca-pos-pos_hide_banknote_button** - From pos: pos_hide_banknote_button
|
||||||
|
- **odoo-bringout-oca-pos-pos_hr_access_right** - From pos: pos_hr_access_right
|
||||||
|
- **odoo-bringout-oca-pos-pos_lot_barcode** - From pos: pos_lot_barcode
|
||||||
|
- **odoo-bringout-oca-pos-pos_lot_selection** - From pos: pos_lot_selection
|
||||||
|
- **odoo-bringout-oca-pos-pos_loyalty_exclude** - From pos: pos_loyalty_exclude
|
||||||
|
- **odoo-bringout-oca-pos-pos_loyalty_redeem_payment** - From pos: pos_loyalty_redeem_payment
|
||||||
|
- **odoo-bringout-oca-pos-pos_margin** - From pos: pos_margin
|
||||||
|
- **odoo-bringout-oca-pos-pos_meal_voucher** - From pos: pos_meal_voucher
|
||||||
|
- **odoo-bringout-oca-pos-pos_membership** - From pos: pos_membership
|
||||||
|
- **odoo-bringout-oca-pos-pos_membership_extension** - From pos: pos_membership_extension
|
||||||
|
- **odoo-bringout-oca-pos-pos_minimize_menu** - From pos: pos_minimize_menu
|
||||||
|
- **odoo-bringout-oca-pos-pos_order_new_line** - From pos: pos_order_new_line
|
||||||
|
- **odoo-bringout-oca-pos-pos_order_remove_line** - From pos: pos_order_remove_line
|
||||||
|
- **odoo-bringout-oca-pos-pos_order_reorder** - From pos: pos_order_reorder
|
||||||
|
- **odoo-bringout-oca-pos-pos_order_to_sale_order** - From pos: pos_order_to_sale_order
|
||||||
|
- **odoo-bringout-oca-pos-pos_order_to_sale_order_delivery** - From pos: pos_order_to_sale_order_delivery
|
||||||
|
- **odoo-bringout-oca-pos-pos_order_to_sale_order_report** - From pos: pos_order_to_sale_order_report
|
||||||
|
- **odoo-bringout-oca-pos-pos_order_to_sale_order_sale_financial_risk** - From pos: pos_order_to_sale_order_sale_financial_risk
|
||||||
|
- **odoo-bringout-oca-pos-pos_partner_birthdate** - From pos: pos_partner_birthdate
|
||||||
|
- **odoo-bringout-oca-pos-pos_partner_firstname** - From pos: pos_partner_firstname
|
||||||
|
- **odoo-bringout-oca-pos-pos_partner_location_abstract** - From pos: pos_partner_location_abstract
|
||||||
|
- **odoo-bringout-oca-pos-pos_partner_location_google_map** - From pos: pos_partner_location_google_map
|
||||||
|
- **odoo-bringout-oca-pos-pos_partner_sale_warning** - From pos: pos_partner_sale_warning
|
||||||
|
- **odoo-bringout-oca-pos-pos_payment_change** - From pos: pos_payment_change
|
||||||
|
- **odoo-bringout-oca-pos-pos_payment_description** - From pos: pos_payment_description
|
||||||
|
- **odoo-bringout-oca-pos-pos_payment_method_cashdro** - From pos: pos_payment_method_cashdro
|
||||||
|
- **odoo-bringout-oca-pos-pos_payment_method_change_policy** - From pos: pos_payment_method_change_policy
|
||||||
|
- **odoo-bringout-oca-pos-pos_payment_method_image** - From pos: pos_payment_method_image
|
||||||
|
- **odoo-bringout-oca-pos-pos_payment_restriction** - From pos: pos_payment_restriction
|
||||||
|
- **odoo-bringout-oca-pos-pos_payment_terminal** - From pos: pos_payment_terminal
|
||||||
|
- **odoo-bringout-oca-pos-pos_payment_usability** - From pos: pos_payment_usability
|
||||||
|
- **odoo-bringout-oca-pos-pos_picking_delayed** - From pos: pos_picking_delayed
|
||||||
|
- **odoo-bringout-oca-pos-pos_price_to_weight** - From pos: pos_price_to_weight
|
||||||
|
- **odoo-bringout-oca-pos-pos_pricelist_technical** - From pos: pos_pricelist_technical
|
||||||
|
- **odoo-bringout-oca-pos-pos_product_display_default_code** - From pos: pos_product_display_default_code
|
||||||
|
- **odoo-bringout-oca-pos-pos_product_label** - From pos: pos_product_label
|
||||||
|
- **odoo-bringout-oca-pos-pos_product_mergeable_line** - From pos: pos_product_mergeable_line
|
||||||
|
- **odoo-bringout-oca-pos-pos_product_multi_barcode** - From pos: pos_product_multi_barcode
|
||||||
|
- **odoo-bringout-oca-pos-pos_product_packaging_container_deposit** - From pos: pos_product_packaging_container_deposit
|
||||||
|
- **odoo-bringout-oca-pos-pos_product_packaging_multi_barcode** - From pos: pos_product_packaging_multi_barcode
|
||||||
|
- **odoo-bringout-oca-pos-pos_product_pricelist_alternative** - From pos: pos_product_pricelist_alternative
|
||||||
|
- **odoo-bringout-oca-pos-pos_product_quick_info** - From pos: pos_product_quick_info
|
||||||
|
- **odoo-bringout-oca-pos-pos_receipt_hide_info** - From pos: pos_receipt_hide_info
|
||||||
|
- **odoo-bringout-oca-pos-pos_receipt_hide_price** - From pos: pos_receipt_hide_price
|
||||||
|
- **odoo-bringout-oca-pos-pos_receipt_replace_user_by_trigram** - From pos: pos_receipt_replace_user_by_trigram
|
||||||
|
- **odoo-bringout-oca-pos-pos_receipt_replace_user_by_trigram_hr** - From pos: pos_receipt_replace_user_by_trigram_hr
|
||||||
|
- **odoo-bringout-oca-pos-pos_receipt_usability** - From pos: pos_receipt_usability
|
||||||
|
- **odoo-bringout-oca-pos-pos_receipt_vat_detail** - From pos: pos_receipt_vat_detail
|
||||||
|
- **odoo-bringout-oca-pos-pos_report_session_summary** - From pos: pos_report_session_summary
|
||||||
|
- **odoo-bringout-oca-pos-pos_reset_search** - From pos: pos_reset_search
|
||||||
|
- **odoo-bringout-oca-pos-pos_sale_order_print** - From pos: pos_sale_order_print
|
||||||
|
- **odoo-bringout-oca-pos-pos_sale_product_config_no_variant** - From pos: pos_sale_product_config_no_variant
|
||||||
|
- **odoo-bringout-oca-pos-pos_screen_element_custom_size** - From pos: pos_screen_element_custom_size
|
||||||
|
- **odoo-bringout-oca-pos-pos_session_pay_invoice** - From pos: pos_session_pay_invoice
|
||||||
|
- **odoo-bringout-oca-pos-pos_stock_available_online** - From pos: pos_stock_available_online
|
||||||
|
- **odoo-bringout-oca-pos-pos_supplierinfo_search** - From pos: pos_supplierinfo_search
|
||||||
|
- **odoo-bringout-oca-pos-pos_ticket_extra_company_info_l10n_fr** - From pos: pos_ticket_extra_company_info_l10n_fr
|
||||||
|
- **odoo-bringout-oca-pos-pos_timeout** - From pos: pos_timeout
|
||||||
|
- **odoo-bringout-oca-pos-pos_to_weight_by_product_uom** - From pos: pos_to_weight_by_product_uom
|
||||||
|
- **odoo-bringout-oca-product-configurator-product_configurator** - From product: configurator_product_configurator
|
||||||
|
- **odoo-bringout-oca-product-configurator-product_configurator_mrp** - From product: configurator_product_configurator_mrp
|
||||||
|
- **odoo-bringout-oca-product-configurator-product_configurator_sale** - From product: configurator_product_configurator_sale
|
||||||
|
- **odoo-bringout-oca-product-pack-product_pack** - From product: pack_product_pack
|
||||||
|
- **odoo-bringout-oca-product-pack-purchase_product_pack** - From product: pack_purchase_product_pack
|
||||||
|
- **odoo-bringout-oca-product-pack-sale_product_pack** - From product: pack_sale_product_pack
|
||||||
|
- **odoo-bringout-oca-product-pack-sale_stock_product_pack** - From product: pack_sale_stock_product_pack
|
||||||
|
- **odoo-bringout-oca-product-pack-stock_product_pack** - From product: pack_stock_product_pack
|
||||||
|
- **odoo-bringout-oca-product-pack-website_sale_product_pack** - From product: pack_website_sale_product_pack
|
||||||
|
- **odoo-bringout-oca-purchase-reporting-purchase_backorder** - From purchase: reporting_purchase_backorder
|
||||||
|
- **odoo-bringout-oca-purchase-reporting-purchase_comment_template** - From purchase: reporting_purchase_comment_template
|
||||||
|
- **odoo-bringout-oca-purchase-reporting-purchase_packaging_report** - From purchase: reporting_purchase_packaging_report
|
||||||
|
- **odoo-bringout-oca-purchase-reporting-purchase_report_date_format** - From purchase: reporting_purchase_report_date_format
|
||||||
|
- **odoo-bringout-oca-purchase-reporting-purchase_report_payment_term** - From purchase: reporting_purchase_report_payment_term
|
||||||
|
- **odoo-bringout-oca-purchase-reporting-purchase_report_shipping_address** - From purchase: reporting_purchase_report_shipping_address
|
||||||
|
- **odoo-bringout-oca-queue-base_export_async** - From queue: base_export_async
|
||||||
|
- **odoo-bringout-oca-queue-base_import_async** - From queue: base_import_async
|
||||||
|
- **odoo-bringout-oca-queue-queue_job** - From queue: queue_job
|
||||||
|
- **odoo-bringout-oca-queue-queue_job_batch** - From queue: queue_job_batch
|
||||||
|
- **odoo-bringout-oca-queue-queue_job_cron** - From queue: queue_job_cron
|
||||||
|
- **odoo-bringout-oca-queue-queue_job_cron_jobrunner** - From queue: queue_job_cron_jobrunner
|
||||||
|
- **odoo-bringout-oca-queue-queue_job_subscribe** - From queue: queue_job_subscribe
|
||||||
|
- **odoo-bringout-oca-queue-queue_job_web_notify** - From queue: queue_job_web_notify
|
||||||
|
- **odoo-bringout-oca-queue-test_base_import_async** - From queue: test_base_import_async
|
||||||
|
- **odoo-bringout-oca-queue-test_queue_job** - From queue: test_queue_job
|
||||||
|
- **odoo-bringout-oca-queue-test_queue_job_batch** - From queue: test_queue_job_batch
|
||||||
|
- **odoo-bringout-oca-rest-framework-auth_partner** - From rest: framework_auth_partner
|
||||||
|
- **odoo-bringout-oca-rest-framework-base_rest** - From rest: framework_base_rest
|
||||||
|
- **odoo-bringout-oca-rest-framework-base_rest_auth_api_key** - From rest: framework_base_rest_auth_api_key
|
||||||
|
- **odoo-bringout-oca-rest-framework-base_rest_auth_jwt** - From rest: framework_base_rest_auth_jwt
|
||||||
|
- **odoo-bringout-oca-rest-framework-base_rest_auth_user_service** - From rest: framework_base_rest_auth_user_service
|
||||||
|
- **odoo-bringout-oca-rest-framework-base_rest_datamodel** - From rest: framework_base_rest_datamodel
|
||||||
|
- **odoo-bringout-oca-rest-framework-base_rest_demo** - From rest: framework_base_rest_demo
|
||||||
|
- **odoo-bringout-oca-rest-framework-base_rest_pydantic** - From rest: framework_base_rest_pydantic
|
||||||
|
- **odoo-bringout-oca-rest-framework-datamodel** - From rest: framework_datamodel
|
||||||
|
- **odoo-bringout-oca-rest-framework-extendable** - From rest: framework_extendable
|
||||||
|
- **odoo-bringout-oca-rest-framework-extendable_fastapi** - From rest: framework_extendable_fastapi
|
||||||
|
- **odoo-bringout-oca-rest-framework-fastapi** - From rest: framework_fastapi
|
||||||
|
- **odoo-bringout-oca-rest-framework-fastapi_auth_jwt** - From rest: framework_fastapi_auth_jwt
|
||||||
|
- **odoo-bringout-oca-rest-framework-fastapi_auth_jwt_demo** - From rest: framework_fastapi_auth_jwt_demo
|
||||||
|
- **odoo-bringout-oca-rest-framework-fastapi_auth_partner** - From rest: framework_fastapi_auth_partner
|
||||||
|
- **odoo-bringout-oca-rest-framework-fastapi_encrypted_errors** - From rest: framework_fastapi_encrypted_errors
|
||||||
|
- **odoo-bringout-oca-rest-framework-graphql_base** - From rest: framework_graphql_base
|
||||||
|
- **odoo-bringout-oca-rest-framework-graphql_demo** - From rest: framework_graphql_demo
|
||||||
|
- **odoo-bringout-oca-rest-framework-model_serializer** - From rest: framework_model_serializer
|
||||||
|
- **odoo-bringout-oca-rest-framework-pydantic** - From rest: framework_pydantic
|
||||||
|
- **odoo-bringout-oca-rest-framework-rest_log** - From rest: framework_rest_log
|
||||||
|
- **odoo-bringout-oca-rma-product_warranty** - From rma: product_warranty
|
||||||
|
- **odoo-bringout-oca-rma-rma** - From rma: rma
|
||||||
|
- **odoo-bringout-oca-rma-rma_delivery** - From rma: rma_delivery
|
||||||
|
- **odoo-bringout-oca-rma-rma_lot** - From rma: rma_lot
|
||||||
|
- **odoo-bringout-oca-rma-rma_procurement_customer** - From rma: rma_procurement_customer
|
||||||
|
- **odoo-bringout-oca-rma-rma_reason** - From rma: rma_reason
|
||||||
|
- **odoo-bringout-oca-rma-rma_sale** - From rma: rma_sale
|
||||||
|
- **odoo-bringout-oca-rma-rma_sale_lot** - From rma: rma_sale_lot
|
||||||
|
- **odoo-bringout-oca-rma-rma_sale_mrp** - From rma: rma_sale_mrp
|
||||||
|
- **odoo-bringout-oca-rma-rma_sale_reason** - From rma: rma_sale_reason
|
||||||
|
- **odoo-bringout-oca-sale-reporting-product_sold_by_delivery_week** - From sale: reporting_product_sold_by_delivery_week
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_comment_template** - From sale: reporting_sale_comment_template
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_layout_category_hide_detail** - From sale: reporting_sale_layout_category_hide_detail
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_order_line_position** - From sale: reporting_sale_order_line_position
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_order_product_recommendation_product_sold_by_delivery_week** - From sale: reporting_sale_order_product_recommendation_product_sold_by_delivery_week
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_order_report_product_image** - From sale: reporting_sale_order_report_product_image
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_order_weight** - From sale: reporting_sale_order_weight
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_packaging_report** - From sale: reporting_sale_packaging_report
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_report_commitment_date** - From sale: reporting_sale_report_commitment_date
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_report_country_state** - From sale: reporting_sale_report_country_state
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_report_delivered** - From sale: reporting_sale_report_delivered
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_report_delivered_attribute_values** - From sale: reporting_sale_report_delivered_attribute_values
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_report_delivered_deposit** - From sale: reporting_sale_report_delivered_deposit
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_report_delivered_subtotal** - From sale: reporting_sale_report_delivered_subtotal
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_report_delivered_volume** - From sale: reporting_sale_report_delivered_volume
|
||||||
|
- **odoo-bringout-oca-sale-reporting-sale_report_salesperson_from_partner** - From sale: reporting_sale_report_salesperson_from_partner
|
||||||
|
- **odoo-bringout-oca-server-tools-attachment_delete_restrict** - From server: tools_attachment_delete_restrict
|
||||||
|
- **odoo-bringout-oca-server-tools-attachment_logging** - From server: tools_attachment_logging
|
||||||
|
- **odoo-bringout-oca-server-tools-attachment_queue** - From server: tools_attachment_queue
|
||||||
|
- **odoo-bringout-oca-server-tools-attachment_synchronize** - From server: tools_attachment_synchronize
|
||||||
|
- **odoo-bringout-oca-server-tools-attachment_unindex_content** - From server: tools_attachment_unindex_content
|
||||||
|
- **odoo-bringout-oca-server-tools-auditlog** - From server: tools_auditlog
|
||||||
|
- **odoo-bringout-oca-server-tools-auto_backup** - From server: tools_auto_backup
|
||||||
|
- **odoo-bringout-oca-server-tools-autovacuum_message_attachment** - From server: tools_autovacuum_message_attachment
|
||||||
|
- **odoo-bringout-oca-server-tools-base_changeset** - From server: tools_base_changeset
|
||||||
|
- **odoo-bringout-oca-server-tools-base_conditional_image** - From server: tools_base_conditional_image
|
||||||
|
- **odoo-bringout-oca-server-tools-base_cron_exclusion** - From server: tools_base_cron_exclusion
|
||||||
|
- **odoo-bringout-oca-server-tools-base_domain_inverse_function** - From server: tools_base_domain_inverse_function
|
||||||
|
- **odoo-bringout-oca-server-tools-base_exception** - From server: tools_base_exception
|
||||||
|
- **odoo-bringout-oca-server-tools-base_fontawesome** - From server: tools_base_fontawesome
|
||||||
|
- **odoo-bringout-oca-server-tools-base_force_record_noupdate** - From server: tools_base_force_record_noupdate
|
||||||
|
- **odoo-bringout-oca-server-tools-base_import_default_enable_tracking** - From server: tools_base_import_default_enable_tracking
|
||||||
|
- **odoo-bringout-oca-server-tools-base_import_odoo** - From server: tools_base_import_odoo
|
||||||
|
- **odoo-bringout-oca-server-tools-base_m2m_custom_field** - From server: tools_base_m2m_custom_field
|
||||||
|
- **odoo-bringout-oca-server-tools-base_multi_image** - From server: tools_base_multi_image
|
||||||
|
- **odoo-bringout-oca-server-tools-base_name_search_improved** - From server: tools_base_name_search_improved
|
||||||
|
- **odoo-bringout-oca-server-tools-base_partition** - From server: tools_base_partition
|
||||||
|
- **odoo-bringout-oca-server-tools-base_remote** - From server: tools_base_remote
|
||||||
|
- **odoo-bringout-oca-server-tools-base_search_fuzzy** - From server: tools_base_search_fuzzy
|
||||||
|
- **odoo-bringout-oca-server-tools-base_sequence_default** - From server: tools_base_sequence_default
|
||||||
|
- **odoo-bringout-oca-server-tools-base_sequence_option** - From server: tools_base_sequence_option
|
||||||
|
- **odoo-bringout-oca-server-tools-base_sparse_field_list_support** - From server: tools_base_sparse_field_list_support
|
||||||
|
- **odoo-bringout-oca-server-tools-base_technical_user** - From server: tools_base_technical_user
|
||||||
|
- **odoo-bringout-oca-server-tools-base_time_window** - From server: tools_base_time_window
|
||||||
|
- **odoo-bringout-oca-server-tools-base_view_inheritance_extension** - From server: tools_base_view_inheritance_extension
|
||||||
|
- **odoo-bringout-oca-server-tools-bus_alt_connection** - From server: tools_bus_alt_connection
|
||||||
|
- **odoo-bringout-oca-server-tools-cron_daylight_saving_time_resistant** - From server: tools_cron_daylight_saving_time_resistant
|
||||||
|
- **odoo-bringout-oca-server-tools-database_cleanup** - From server: tools_database_cleanup
|
||||||
|
- **odoo-bringout-oca-server-tools-datetime_formatter** - From server: tools_datetime_formatter
|
||||||
|
- **odoo-bringout-oca-server-tools-dbfilter_from_header** - From server: tools_dbfilter_from_header
|
||||||
|
- **odoo-bringout-oca-server-tools-excel_import_export** - From server: tools_excel_import_export
|
||||||
|
- **odoo-bringout-oca-server-tools-excel_import_export_demo** - From server: tools_excel_import_export_demo
|
||||||
|
- **odoo-bringout-oca-server-tools-excel_import_export_unidecode** - From server: tools_excel_import_export_unidecode
|
||||||
|
- **odoo-bringout-oca-server-tools-fetchmail_attach_from_folder** - From server: tools_fetchmail_attach_from_folder
|
||||||
|
- **odoo-bringout-oca-server-tools-fetchmail_notify_error_to_sender** - From server: tools_fetchmail_notify_error_to_sender
|
||||||
|
- **odoo-bringout-oca-server-tools-fetchmail_notify_error_to_sender_test** - From server: tools_fetchmail_notify_error_to_sender_test
|
||||||
|
- **odoo-bringout-oca-server-tools-html_image_url_extractor** - From server: tools_html_image_url_extractor
|
||||||
|
- **odoo-bringout-oca-server-tools-html_text** - From server: tools_html_text
|
||||||
|
- **odoo-bringout-oca-server-tools-iap_alternative_provider** - From server: tools_iap_alternative_provider
|
||||||
|
- **odoo-bringout-oca-server-tools-jsonifier** - From server: tools_jsonifier
|
||||||
|
- **odoo-bringout-oca-server-tools-letsencrypt** - From server: tools_letsencrypt
|
||||||
|
- **odoo-bringout-oca-server-tools-module_analysis** - From server: tools_module_analysis
|
||||||
|
- **odoo-bringout-oca-server-tools-module_auto_update** - From server: tools_module_auto_update
|
||||||
|
- **odoo-bringout-oca-server-tools-module_change_auto_install** - From server: tools_module_change_auto_install
|
||||||
|
- **odoo-bringout-oca-server-tools-nsca_client** - From server: tools_nsca_client
|
||||||
|
- **odoo-bringout-oca-server-tools-odoo_test_xmlrunner** - From server: tools_odoo_test_xmlrunner
|
||||||
|
- **odoo-bringout-oca-server-tools-onchange_helper** - From server: tools_onchange_helper
|
||||||
|
- **odoo-bringout-oca-server-tools-postgres_vacuum** - From server: tools_postgres_vacuum
|
||||||
|
- **odoo-bringout-oca-server-tools-rpc_helper** - From server: tools_rpc_helper
|
||||||
|
- **odoo-bringout-oca-server-tools-scheduler_error_mailer** - From server: tools_scheduler_error_mailer
|
||||||
|
- **odoo-bringout-oca-server-tools-sentry** - From server: tools_sentry
|
||||||
|
- **odoo-bringout-oca-server-tools-sequence_python** - From server: tools_sequence_python
|
||||||
|
- **odoo-bringout-oca-server-tools-server_action_logging** - From server: tools_server_action_logging
|
||||||
|
- **odoo-bringout-oca-server-tools-session_db** - From server: tools_session_db
|
||||||
|
- **odoo-bringout-oca-server-tools-tracking_manager** - From server: tools_tracking_manager
|
||||||
|
- **odoo-bringout-oca-server-tools-upgrade_analysis** - From server: tools_upgrade_analysis
|
||||||
|
- **odoo-bringout-oca-server-tools-url_attachment_search_fuzzy** - From server: tools_url_attachment_search_fuzzy
|
||||||
|
- **odoo-bringout-oca-server-ux-announcement** - From server: ux_announcement
|
||||||
|
- **odoo-bringout-oca-server-ux-announcement_dialog_size** - From server: ux_announcement_dialog_size
|
||||||
|
- **odoo-bringout-oca-server-ux-barcode_action** - From server: ux_barcode_action
|
||||||
|
- **odoo-bringout-oca-server-ux-base_archive_security** - From server: ux_base_archive_security
|
||||||
|
- **odoo-bringout-oca-server-ux-base_binary_url_import** - From server: ux_base_binary_url_import
|
||||||
|
- **odoo-bringout-oca-server-ux-base_cancel_confirm** - From server: ux_base_cancel_confirm
|
||||||
|
- **odoo-bringout-oca-server-ux-base_custom_filter** - From server: ux_base_custom_filter
|
||||||
|
- **odoo-bringout-oca-server-ux-base_export_manager** - From server: ux_base_export_manager
|
||||||
|
- **odoo-bringout-oca-server-ux-base_import_security_group** - From server: ux_base_import_security_group
|
||||||
|
- **odoo-bringout-oca-server-ux-base_menu_visibility_restriction** - From server: ux_base_menu_visibility_restriction
|
||||||
|
- **odoo-bringout-oca-server-ux-base_optional_quick_create** - From server: ux_base_optional_quick_create
|
||||||
|
- **odoo-bringout-oca-server-ux-base_revision** - From server: ux_base_revision
|
||||||
|
- **odoo-bringout-oca-server-ux-base_rule_visibility_restriction** - From server: ux_base_rule_visibility_restriction
|
||||||
|
- **odoo-bringout-oca-server-ux-base_search_custom_field_filter** - From server: ux_base_search_custom_field_filter
|
||||||
|
- **odoo-bringout-oca-server-ux-base_substate** - From server: ux_base_substate
|
||||||
|
- **odoo-bringout-oca-server-ux-base_technical_features** - From server: ux_base_technical_features
|
||||||
|
- **odoo-bringout-oca-server-ux-base_tier_validation** - From server: ux_base_tier_validation
|
||||||
|
- **odoo-bringout-oca-server-ux-base_tier_validation_board** - From server: ux_base_tier_validation_board
|
||||||
|
- **odoo-bringout-oca-server-ux-base_tier_validation_correction** - From server: ux_base_tier_validation_correction
|
||||||
|
- **odoo-bringout-oca-server-ux-base_tier_validation_definition_server_action** - From server: ux_base_tier_validation_definition_server_action
|
||||||
|
- **odoo-bringout-oca-server-ux-base_tier_validation_formula** - From server: ux_base_tier_validation_formula
|
||||||
|
- **odoo-bringout-oca-server-ux-base_tier_validation_forward** - From server: ux_base_tier_validation_forward
|
||||||
|
- **odoo-bringout-oca-server-ux-base_tier_validation_report** - From server: ux_base_tier_validation_report
|
||||||
|
- **odoo-bringout-oca-server-ux-base_tier_validation_server_action** - From server: ux_base_tier_validation_server_action
|
||||||
|
- **odoo-bringout-oca-server-ux-base_tier_validation_waiting** - From server: ux_base_tier_validation_waiting
|
||||||
|
- **odoo-bringout-oca-server-ux-base_user_chatter** - From server: ux_base_user_chatter
|
||||||
|
- **odoo-bringout-oca-server-ux-base_user_locale** - From server: ux_base_user_locale
|
||||||
|
- **odoo-bringout-oca-server-ux-confirmation_wizard** - From server: ux_confirmation_wizard
|
||||||
|
- **odoo-bringout-oca-server-ux-date_range** - From server: ux_date_range
|
||||||
|
- **odoo-bringout-oca-server-ux-date_range_account** - From server: ux_date_range_account
|
||||||
|
- **odoo-bringout-oca-server-ux-developer_menu** - From server: ux_developer_menu
|
||||||
|
- **odoo-bringout-oca-server-ux-document_quick_access** - From server: ux_document_quick_access
|
||||||
|
- **odoo-bringout-oca-server-ux-document_quick_access_folder_auto_classification** - From server: ux_document_quick_access_folder_auto_classification
|
||||||
|
- **odoo-bringout-oca-server-ux-filter_multi_user** - From server: ux_filter_multi_user
|
||||||
|
- **odoo-bringout-oca-server-ux-mail_message_destiny_link_template** - From server: ux_mail_message_destiny_link_template
|
||||||
|
- **odoo-bringout-oca-server-ux-mail_suggested_recipient_unchecked** - From server: ux_mail_suggested_recipient_unchecked
|
||||||
|
- **odoo-bringout-oca-server-ux-misc_settings** - From server: ux_misc_settings
|
||||||
|
- **odoo-bringout-oca-server-ux-multi_step_wizard** - From server: ux_multi_step_wizard
|
||||||
|
- **odoo-bringout-oca-server-ux-sequence_check_digit** - From server: ux_sequence_check_digit
|
||||||
|
- **odoo-bringout-oca-server-ux-sequence_reset_period** - From server: ux_sequence_reset_period
|
||||||
|
- **odoo-bringout-oca-server-ux-server_action_mass_edit** - From server: ux_server_action_mass_edit
|
||||||
|
- **odoo-bringout-oca-server-ux-template_content_swapper** - From server: ux_template_content_swapper
|
||||||
|
- **odoo-bringout-oca-server-ux-test_base_binary_url_import** - From server: ux_test_base_binary_url_import
|
||||||
|
- **odoo-bringout-oca-server-ux-user_all_groups** - From server: ux_user_all_groups
|
||||||
|
- **odoo-bringout-oca-stock-logistics-availability-sale_stock_available_info_popup** - From stock: logistics_availability_sale_stock_available_info_popup
|
||||||
|
- **odoo-bringout-oca-stock-logistics-availability-stock_available** - From stock: logistics_availability_stock_available
|
||||||
|
- **odoo-bringout-oca-stock-logistics-availability-stock_available_base_exclude_location** - From stock: logistics_availability_stock_available_base_exclude_location
|
||||||
|
- **odoo-bringout-oca-stock-logistics-availability-stock_available_exclude_location** - From stock: logistics_availability_stock_available_exclude_location
|
||||||
|
- **odoo-bringout-oca-stock-logistics-availability-stock_available_immediately** - From stock: logistics_availability_stock_available_immediately
|
||||||
|
- **odoo-bringout-oca-stock-logistics-availability-stock_available_immediately_exclude_location** - From stock: logistics_availability_stock_available_immediately_exclude_location
|
||||||
|
- **odoo-bringout-oca-stock-logistics-availability-stock_available_location_get_domain** - From stock: logistics_availability_stock_available_location_get_domain
|
||||||
|
- **odoo-bringout-oca-stock-logistics-availability-stock_available_mrp** - From stock: logistics_availability_stock_available_mrp
|
||||||
|
- **odoo-bringout-oca-stock-logistics-availability-stock_available_unreserved** - From stock: logistics_availability_stock_available_unreserved
|
||||||
|
- **odoo-bringout-oca-stock-logistics-availability-stock_free_quantity** - From stock: logistics_availability_stock_free_quantity
|
||||||
|
- **odoo-bringout-oca-stock-logistics-availability-stock_quant_available_quantity** - From stock: logistics_availability_stock_quant_available_quantity
|
||||||
|
- **odoo-bringout-oca-stock-logistics-request-stock_request** - From stock: logistics_request_stock_request
|
||||||
|
- **odoo-bringout-oca-stock-logistics-request-stock_request_direction** - From stock: logistics_request_stock_request_direction
|
||||||
|
- **odoo-bringout-oca-stock-logistics-request-stock_request_kanban** - From stock: logistics_request_stock_request_kanban
|
||||||
|
- **odoo-bringout-oca-stock-logistics-request-stock_request_mrp** - From stock: logistics_request_stock_request_mrp
|
||||||
|
- **odoo-bringout-oca-stock-logistics-request-stock_request_picking_type** - From stock: logistics_request_stock_request_picking_type
|
||||||
|
- **odoo-bringout-oca-stock-logistics-request-stock_request_purchase** - From stock: logistics_request_stock_request_purchase
|
||||||
|
- **odoo-bringout-oca-stock-logistics-request-stock_request_submit** - From stock: logistics_request_stock_request_submit
|
||||||
|
- **odoo-bringout-oca-stock-logistics-request-stock_request_tier_validation** - From stock: logistics_request_stock_request_tier_validation
|
||||||
|
- **odoo-bringout-oca-stock-logistics-tracking-internal_stock_quant_package** - From stock: logistics_tracking_internal_stock_quant_package
|
||||||
|
- **odoo-bringout-oca-stock-logistics-tracking-stock_quant_package_multi_reference** - From stock: logistics_tracking_stock_quant_package_multi_reference
|
||||||
|
- **odoo-bringout-oca-web-web_action_conditionable** - From web: web_action_conditionable
|
||||||
|
- **odoo-bringout-oca-web-web_advanced_search** - From web: web_advanced_search
|
||||||
|
- **odoo-bringout-oca-web-web_apply_field_style** - From web: web_apply_field_style
|
||||||
|
- **odoo-bringout-oca-web-web_calendar_slot_duration** - From web: web_calendar_slot_duration
|
||||||
|
- **odoo-bringout-oca-web-web_chatter_position** - From web: web_chatter_position
|
||||||
|
- **odoo-bringout-oca-web-web_company_color** - From web: web_company_color
|
||||||
|
- **odoo-bringout-oca-web-web_copy_confirm** - From web: web_copy_confirm
|
||||||
|
- **odoo-bringout-oca-web-web_dark_mode** - From web: web_dark_mode
|
||||||
|
- **odoo-bringout-oca-web-web_dashboard_tile** - From web: web_dashboard_tile
|
||||||
|
- **odoo-bringout-oca-web-web_datetime_picker_default_time** - From web: web_datetime_picker_default_time
|
||||||
|
- **odoo-bringout-oca-web-web_dialog_size** - From web: web_dialog_size
|
||||||
|
- **odoo-bringout-oca-web-web_disable_export_group** - From web: web_disable_export_group
|
||||||
|
- **odoo-bringout-oca-web-web_domain_field** - From web: web_domain_field
|
||||||
|
- **odoo-bringout-oca-web-web_editor_class_selector** - From web: web_editor_class_selector
|
||||||
|
- **odoo-bringout-oca-web-web_environment_ribbon** - From web: web_environment_ribbon
|
||||||
|
- **odoo-bringout-oca-web-web_field_numeric_formatting** - From web: web_field_numeric_formatting
|
||||||
|
- **odoo-bringout-oca-web-web_field_tooltip** - From web: web_field_tooltip
|
||||||
|
- **odoo-bringout-oca-web-web_group_expand** - From web: web_group_expand
|
||||||
|
- **odoo-bringout-oca-web-web_help** - From web: web_help
|
||||||
|
- **odoo-bringout-oca-web-web_hide_field_with_key** - From web: web_hide_field_with_key
|
||||||
|
- **odoo-bringout-oca-web-web_ir_actions_act_multi** - From web: web_ir_actions_act_multi
|
||||||
|
- **odoo-bringout-oca-web-web_ir_actions_act_window_message** - From web: web_ir_actions_act_window_message
|
||||||
|
- **odoo-bringout-oca-web-web_ir_actions_act_window_page** - From web: web_ir_actions_act_window_page
|
||||||
|
- **odoo-bringout-oca-web-web_ir_actions_close_wizard_refresh_view** - From web: web_ir_actions_close_wizard_refresh_view
|
||||||
|
- **odoo-bringout-oca-web-web_listview_range_select** - From web: web_listview_range_select
|
||||||
|
- **odoo-bringout-oca-web-web_m2x_options** - From web: web_m2x_options
|
||||||
|
- **odoo-bringout-oca-web-web_m2x_options_manager** - From web: web_m2x_options_manager
|
||||||
|
- **odoo-bringout-oca-web-web_no_bubble** - From web: web_no_bubble
|
||||||
|
- **odoo-bringout-oca-web-web_notify** - From web: web_notify
|
||||||
|
- **odoo-bringout-oca-web-web_notify_channel_message** - From web: web_notify_channel_message
|
||||||
|
- **odoo-bringout-oca-web-web_notify_upgrade** - From web: web_notify_upgrade
|
||||||
|
- **odoo-bringout-oca-web-web_pivot_computed_measure** - From web: web_pivot_computed_measure
|
||||||
|
- **odoo-bringout-oca-web-web_pwa_oca** - From web: web_pwa_oca
|
||||||
|
- **odoo-bringout-oca-web-web_quick_start_screen** - From web: web_quick_start_screen
|
||||||
|
- **odoo-bringout-oca-web-web_refresher** - From web: web_refresher
|
||||||
|
- **odoo-bringout-oca-web-web_remember_tree_column_width** - From web: web_remember_tree_column_width
|
||||||
|
- **odoo-bringout-oca-web-web_responsive** - From web: web_responsive
|
||||||
|
- **odoo-bringout-oca-web-web_save_discard_button** - From web: web_save_discard_button
|
||||||
|
- **odoo-bringout-oca-web-web_search_with_and** - From web: web_search_with_and
|
||||||
|
- **odoo-bringout-oca-web-web_select_all_companies** - From web: web_select_all_companies
|
||||||
|
- **odoo-bringout-oca-web-web_send_message_popup** - From web: web_send_message_popup
|
||||||
|
- **odoo-bringout-oca-web-web_sheet_full_width** - From web: web_sheet_full_width
|
||||||
|
- **odoo-bringout-oca-web-web_systray_button_init_action** - From web: web_systray_button_init_action
|
||||||
|
- **odoo-bringout-oca-web-web_theme_classic** - From web: web_theme_classic
|
||||||
|
- **odoo-bringout-oca-web-web_time_range_menu_custom** - From web: web_time_range_menu_custom
|
||||||
|
- **odoo-bringout-oca-web-web_timeline** - From web: web_timeline
|
||||||
|
- **odoo-bringout-oca-web-web_touchscreen** - From web: web_touchscreen
|
||||||
|
- **odoo-bringout-oca-web-web_tree_duplicate** - From web: web_tree_duplicate
|
||||||
|
- **odoo-bringout-oca-web-web_tree_dynamic_colored_field** - From web: web_tree_dynamic_colored_field
|
||||||
|
- **odoo-bringout-oca-web-web_tree_many2one_clickable** - From web: web_tree_many2one_clickable
|
||||||
|
- **odoo-bringout-oca-web-web_widget_bokeh_chart** - From web: web_widget_bokeh_chart
|
||||||
|
- **odoo-bringout-oca-web-web_widget_char_size** - From web: web_widget_char_size
|
||||||
|
- **odoo-bringout-oca-web-web_widget_datepicker_fulloptions** - From web: web_widget_datepicker_fulloptions
|
||||||
|
- **odoo-bringout-oca-web-web_widget_domain_editor_dialog** - From web: web_widget_domain_editor_dialog
|
||||||
|
- **odoo-bringout-oca-web-web_widget_dropdown_dynamic** - From web: web_widget_dropdown_dynamic
|
||||||
|
- **odoo-bringout-oca-web-web_widget_image_download** - From web: web_widget_image_download
|
||||||
|
- **odoo-bringout-oca-web-web_widget_image_webcam** - From web: web_widget_image_webcam
|
||||||
|
- **odoo-bringout-oca-web-web_widget_mpld3_chart** - From web: web_widget_mpld3_chart
|
||||||
|
- **odoo-bringout-oca-web-web_widget_numeric_step** - From web: web_widget_numeric_step
|
||||||
|
- **odoo-bringout-oca-web-web_widget_one2many_tree_line_duplicate** - From web: web_widget_one2many_tree_line_duplicate
|
||||||
|
- **odoo-bringout-oca-web-web_widget_open_tab** - From web: web_widget_open_tab
|
||||||
|
- **odoo-bringout-oca-web-web_widget_pattern** - From web: web_widget_pattern
|
||||||
|
- **odoo-bringout-oca-web-web_widget_pattern_partner_autocomplete** - From web: web_widget_pattern_partner_autocomplete
|
||||||
|
- **odoo-bringout-oca-web-web_widget_plotly_chart** - From web: web_widget_plotly_chart
|
||||||
|
- **odoo-bringout-oca-web-web_widget_product_label_section_and_note** - From web: web_widget_product_label_section_and_note
|
||||||
|
- **odoo-bringout-oca-web-web_widget_progressbar_gradient** - From web: web_widget_progressbar_gradient
|
||||||
|
- **odoo-bringout-oca-web-web_widget_remaining_days_exact_date** - From web: web_widget_remaining_days_exact_date
|
||||||
|
- **odoo-bringout-oca-web-web_widget_x2many_2d_matrix** - From web: web_widget_x2many_2d_matrix
|
||||||
|
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Install any package from this category:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install from local directory
|
||||||
|
pip install packages/oca-technical/PACKAGE_NAME/
|
||||||
|
|
||||||
|
# Install in development mode
|
||||||
|
pip install -e packages/oca-technical/PACKAGE_NAME/
|
||||||
|
|
||||||
|
# Using uv (recommended for speed)
|
||||||
|
uv add packages/oca-technical/PACKAGE_NAME/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Repository Structure
|
||||||
|
|
||||||
|
Each package in this repository follows the standard Odoo addon structure:
|
||||||
|
|
||||||
|
```
|
||||||
|
oca-technical/
|
||||||
|
├── 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 Cut-off Accrual Order Base
|
||||||
|
|
||||||
|
Odoo addon: account_cutoff_accrual_order_base
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install odoo-bringout-oca-account-closing-account_cutoff_accrual_order_base
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
This addon depends on:
|
||||||
|
- account_cutoff_base
|
||||||
|
|
||||||
|
## Manifest Information
|
||||||
|
|
||||||
|
- **Name**: Account Cut-off Accrual Order Base
|
||||||
|
- **Version**: 16.0.1.1.0
|
||||||
|
- **Category**: Accounting & Finance
|
||||||
|
- **License**: AGPL-3
|
||||||
|
- **Installable**: True
|
||||||
|
|
||||||
|
## Source
|
||||||
|
|
||||||
|
Based on [OCA/account-closing](https://github.com/OCA/account-closing) branch 16.0, addon `account_cutoff_accrual_order_base`.
|
||||||
|
|
||||||
|
## 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,121 @@
|
||||||
|
==================================
|
||||||
|
Account Cut-off Accrual Order Base
|
||||||
|
==================================
|
||||||
|
|
||||||
|
..
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
!! This file is generated by oca-gen-addon-readme !!
|
||||||
|
!! changes will be overwritten. !!
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
!! source digest: sha256:32932cbcf82dafa4ab85129328cb8347b3e3260836bc2495421e1c7462909d0d
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
.. |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--closing-lightgray.png?logo=github
|
||||||
|
:target: https://github.com/OCA/account-closing/tree/16.0/account_cutoff_accrual_order_base
|
||||||
|
:alt: OCA/account-closing
|
||||||
|
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
||||||
|
:target: https://translation.odoo-community.org/projects/account-closing-16-0/account-closing-16-0-account_cutoff_accrual_order_base
|
||||||
|
: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-closing&target_branch=16.0
|
||||||
|
:alt: Try me on Runboat
|
||||||
|
|
||||||
|
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||||
|
|
||||||
|
This module extends the functionality of account_cutoff_base
|
||||||
|
to allow the computation of expense and revenue cutoffs on orders.
|
||||||
|
|
||||||
|
The accrual is computed by comparing on the order, the quantity
|
||||||
|
delivered/received and the quantity invoiced. In case, some deliveries or
|
||||||
|
invoices have occurred after the cutoff date, those quantities can be affected
|
||||||
|
and are recomputed. This allows to quickly generate a cutoff snapshot by
|
||||||
|
processing few lines.
|
||||||
|
|
||||||
|
You can configure to disable the generation of cutoff entries on orders.
|
||||||
|
For instance, if you know you will never receive the missing invoiced goods,
|
||||||
|
you can disable cutoff entries on a purchase order.
|
||||||
|
|
||||||
|
Once the cutoff lines have been generated but the accounting entries are not yet
|
||||||
|
created, you are still able to create or modify invoices before the accounting
|
||||||
|
butoff date. The cutoff lines will be adapted automatically to reflect the new
|
||||||
|
situation.
|
||||||
|
|
||||||
|
Once the cutoff accounting entries are generated you cannot create or modify
|
||||||
|
invoices before the accounting cutoff date.
|
||||||
|
Nevertheless, you can still reset to draft a supplier invoice but you won't be
|
||||||
|
able to modify any amount. You are then supposed to re-validate the invoice.
|
||||||
|
|
||||||
|
Warning: This module is replacing account_cutoff_picking and is incompatible with it.
|
||||||
|
|
||||||
|
**Table of contents**
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
:local:
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
=============
|
||||||
|
|
||||||
|
To configure this module, you need to:
|
||||||
|
|
||||||
|
#. Go to the accounting settings to select the journals and accounts used for
|
||||||
|
the cutoff.
|
||||||
|
#. Analytic accounting needs to be enable in Accounting - Settings.
|
||||||
|
#. If you want to also accrue the taxes, you need in Accounting - Taxes, for
|
||||||
|
each type of taxes an accrued tax account.
|
||||||
|
|
||||||
|
Bug Tracker
|
||||||
|
===========
|
||||||
|
|
||||||
|
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-closing/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-closing/issues/new?body=module:%20account_cutoff_accrual_order_base%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
|
||||||
|
~~~~~~~
|
||||||
|
|
||||||
|
* BCIM
|
||||||
|
* Akretion
|
||||||
|
|
||||||
|
Contributors
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* Alexis de Lattre (Akretion) <alexis.delattre@akretion.com>
|
||||||
|
* Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
* Thierry Ducrest <thierry.ducrest@camptocamp.com>
|
||||||
|
|
||||||
|
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-jbaudoux| image:: https://github.com/jbaudoux.png?size=40px
|
||||||
|
:target: https://github.com/jbaudoux
|
||||||
|
:alt: jbaudoux
|
||||||
|
|
||||||
|
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|
||||||
|
|
||||||
|
|maintainer-jbaudoux|
|
||||||
|
|
||||||
|
This module is part of the `OCA/account-closing <https://github.com/OCA/account-closing/tree/16.0/account_cutoff_accrual_order_base>`_ project on GitHub.
|
||||||
|
|
||||||
|
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
from . import models
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "Account Cut-off Accrual Order Base",
|
||||||
|
"version": "16.0.1.1.0",
|
||||||
|
"category": "Accounting & Finance",
|
||||||
|
"license": "AGPL-3",
|
||||||
|
"summary": "Accrued Order Base",
|
||||||
|
"author": "BCIM, Akretion, Odoo Community Association (OCA)",
|
||||||
|
"maintainers": ["jbaudoux"],
|
||||||
|
"website": "https://github.com/OCA/account-closing",
|
||||||
|
"depends": ["account_cutoff_base"],
|
||||||
|
"data": [
|
||||||
|
"views/account_cutoff_view.xml",
|
||||||
|
"views/account_cutoff_line_view.xml",
|
||||||
|
],
|
||||||
|
"installable": True,
|
||||||
|
"application": False,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,141 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_cutoff_accrual_order_base
|
||||||
|
#
|
||||||
|
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_cutoff_accrual_order_base
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_cutoff_accrual_order_base.account_cutoff_form
|
||||||
|
msgid "<span> on </span>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_account_cutoff
|
||||||
|
msgid "Account Cut-off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_account_cutoff_line
|
||||||
|
msgid "Account Cut-off Line"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__amount
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,help:account_cutoff_accrual_order_base.field_account_cutoff_line__amount
|
||||||
|
msgid "Amount that is used as base to compute the Cut-off Amount."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__cutoff_amount
|
||||||
|
msgid "Cut-off Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,help:account_cutoff_accrual_order_base.field_account_cutoff_line__cutoff_amount
|
||||||
|
msgid "Cut-off Amount without taxes in the Company Currency."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_order_line_cutoff_accrual_mixin
|
||||||
|
msgid "Cutoff Accrual Order Line Mixin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_order_line_cutoff_accrual_mixin__is_cutoff_accrual_excluded
|
||||||
|
msgid "Do not generate cut-off entries"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Error: Missing '%(label)s' on tax '%(name)s'."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/account_cutoff.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Error: Missing {map_type} account on product '{product}' or on related "
|
||||||
|
"product category."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__invoice_line_ids
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_cutoff_accrual_order_base.account_cutoff_line_form
|
||||||
|
msgid "Invoice Lines"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__invoiced_qty
|
||||||
|
msgid "Invoiced Quantity"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_account_move
|
||||||
|
msgid "Journal Entry"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff__order_line_model
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__order_line_model
|
||||||
|
msgid "Order Line Model"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__product_id
|
||||||
|
msgid "Product"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__quantity
|
||||||
|
msgid "Quantity"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__received_qty
|
||||||
|
msgid "Received Quantity"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Wrong cutoff type %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"You cannot validate an invoice for an accounting date that generates an entry in a closed cut-off (i.e. for which an accounting entry has already been created).\n"
|
||||||
|
" - Cut-off: {cutoff}\n"
|
||||||
|
" - Product: {product}\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"You cannot validate an invoice for an accounting date that modifies a closed cutoff (i.e. for which an accounting entry has already been created).\n"
|
||||||
|
" - Cut-off: {cutoff}\n"
|
||||||
|
" - Product: {product}\n"
|
||||||
|
" - Previous invoiced quantity: {prev_inv_qty}\n"
|
||||||
|
" - New invoiced quantity: {new_inv_qty}"
|
||||||
|
msgstr ""
|
||||||
|
|
@ -0,0 +1,141 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_cutoff_accrual_order_base
|
||||||
|
#
|
||||||
|
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_cutoff_accrual_order_base
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_cutoff_accrual_order_base.account_cutoff_form
|
||||||
|
msgid "<span> on </span>"
|
||||||
|
msgstr "<span> na </span>"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_account_cutoff
|
||||||
|
msgid "Account Cut-off"
|
||||||
|
msgstr "Računovodstveno presjecanje"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_account_cutoff_line
|
||||||
|
msgid "Account Cut-off Line"
|
||||||
|
msgstr "Linija računovodstvenog presjecanja"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__amount
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr "Iznos"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,help:account_cutoff_accrual_order_base.field_account_cutoff_line__amount
|
||||||
|
msgid "Amount that is used as base to compute the Cut-off Amount."
|
||||||
|
msgstr "Iznos koji se koristi kao osnova za izračunavanje iznosa presjecanja."
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__cutoff_amount
|
||||||
|
msgid "Cut-off Amount"
|
||||||
|
msgstr "Iznos presjecanja"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,help:account_cutoff_accrual_order_base.field_account_cutoff_line__cutoff_amount
|
||||||
|
msgid "Cut-off Amount without taxes in the Company Currency."
|
||||||
|
msgstr "Iznos presjecanja bez poreza u valuti kompanije."
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_order_line_cutoff_accrual_mixin
|
||||||
|
msgid "Cutoff Accrual Order Line Mixin"
|
||||||
|
msgstr "Miješavanje akruelne linije narudžbe presjecanja"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_order_line_cutoff_accrual_mixin__is_cutoff_accrual_excluded
|
||||||
|
msgid "Do not generate cut-off entries"
|
||||||
|
msgstr "Ne generiši zapise presjecanja"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Error: Missing '%(label)s' on tax '%(name)s'."
|
||||||
|
msgstr "Greška: Nedostaje '%(label)s' na porezu '%(name)s'."
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/account_cutoff.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Error: Missing {map_type} account on product '{product}' or on related "
|
||||||
|
"product category."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__invoice_line_ids
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_cutoff_accrual_order_base.account_cutoff_line_form
|
||||||
|
msgid "Invoice Lines"
|
||||||
|
msgstr "Stavke fakture"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__invoiced_qty
|
||||||
|
msgid "Invoiced Quantity"
|
||||||
|
msgstr "Fakturisana količina"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_account_move
|
||||||
|
msgid "Journal Entry"
|
||||||
|
msgstr "Žurnal"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff__order_line_model
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__order_line_model
|
||||||
|
msgid "Order Line Model"
|
||||||
|
msgstr "Model linije narudžbe"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__product_id
|
||||||
|
msgid "Product"
|
||||||
|
msgstr "Artikal"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__quantity
|
||||||
|
msgid "Quantity"
|
||||||
|
msgstr "Količina"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__received_qty
|
||||||
|
msgid "Received Quantity"
|
||||||
|
msgstr "Primljena količina"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Wrong cutoff type %s"
|
||||||
|
msgstr "Pogrešan tip presjecanja %s"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"You cannot validate an invoice for an accounting date that generates an entry in a closed cut-off (i.e. for which an accounting entry has already been created).\n"
|
||||||
|
" - Cut-off: {cutoff}\n"
|
||||||
|
" - Product: {product}\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"You cannot validate an invoice for an accounting date that modifies a closed cutoff (i.e. for which an accounting entry has already been created).\n"
|
||||||
|
" - Cut-off: {cutoff}\n"
|
||||||
|
" - Product: {product}\n"
|
||||||
|
" - Previous invoiced quantity: {prev_inv_qty}\n"
|
||||||
|
" - New invoiced quantity: {new_inv_qty}"
|
||||||
|
msgstr ""
|
||||||
|
|
@ -0,0 +1,175 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_cutoff_accrual_order_base
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 16.0+e\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2023-10-26 11:53+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 11: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_cutoff_accrual_order_base
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_cutoff_accrual_order_base.account_cutoff_form
|
||||||
|
msgid "<span> on </span>"
|
||||||
|
msgstr "<span> sur </span>"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_account_cutoff
|
||||||
|
msgid "Account Cut-off"
|
||||||
|
msgstr "Provision"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_account_cutoff_line
|
||||||
|
msgid "Account Cut-off Line"
|
||||||
|
msgstr "Ligne de provision"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__amount
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr "Montant"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,help:account_cutoff_accrual_order_base.field_account_cutoff_line__amount
|
||||||
|
msgid "Amount that is used as base to compute the Cut-off Amount."
|
||||||
|
msgstr ""
|
||||||
|
"Montant qui est utilisé comme base pour calculer le montant de la provision"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__cutoff_amount
|
||||||
|
msgid "Cut-off Amount"
|
||||||
|
msgstr "Montant de la provision"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,help:account_cutoff_accrual_order_base.field_account_cutoff_line__cutoff_amount
|
||||||
|
msgid "Cut-off Amount without taxes in the Company Currency."
|
||||||
|
msgstr "Montant de provision hors taxes dans la devise de la société."
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_order_line_cutoff_accrual_mixin
|
||||||
|
msgid "Cutoff Accrual Order Line Mixin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_order_line_cutoff_accrual_mixin__is_cutoff_accrual_excluded
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Do not generate cut-off entries"
|
||||||
|
msgstr "Ne pas générer d'écriture de provision pour les commande verrouillées"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Error: Missing '%(label)s' on tax '%(name)s'."
|
||||||
|
msgstr "Errur: '%(label)s' manquant sur la taxe '%(name)s'."
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/account_cutoff.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Error: Missing {map_type} account on product '{product}' or on related "
|
||||||
|
"product category."
|
||||||
|
msgstr ""
|
||||||
|
"Erreur: {map_type} compte manquant sur le produit '{product}' ou sur la "
|
||||||
|
"catégorie de product liée."
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__invoice_line_ids
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_cutoff_accrual_order_base.account_cutoff_line_form
|
||||||
|
msgid "Invoice Lines"
|
||||||
|
msgstr "Lignes de facture"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__invoiced_qty
|
||||||
|
msgid "Invoiced Quantity"
|
||||||
|
msgstr "Quantité facturée"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_account_move
|
||||||
|
msgid "Journal Entry"
|
||||||
|
msgstr "Pièce comptable"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff__order_line_model
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__order_line_model
|
||||||
|
msgid "Order Line Model"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__product_id
|
||||||
|
msgid "Product"
|
||||||
|
msgstr "Produit"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__quantity
|
||||||
|
msgid "Quantity"
|
||||||
|
msgstr "Quantité"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__received_qty
|
||||||
|
msgid "Received Quantity"
|
||||||
|
msgstr "Quantité reçue"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Wrong cutoff type %s"
|
||||||
|
msgstr "Mauvais type de cutoff %s"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"You cannot validate an invoice for an accounting date that generates an "
|
||||||
|
"entry in a closed cut-off (i.e. for which an accounting entry has already "
|
||||||
|
"been created).\n"
|
||||||
|
" - Cut-off: {cutoff}\n"
|
||||||
|
" - Product: {product}\n"
|
||||||
|
msgstr ""
|
||||||
|
"Vous ne pouvez pas valider une facture à une date comptable qui génère une "
|
||||||
|
"ligne dans une provision fermée (càd pour laquelle l'écriture comptable de "
|
||||||
|
"provision a déjà été créée).\n"
|
||||||
|
" - Provision: {cutoff}\n"
|
||||||
|
" - Produit: {product}\n"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"You cannot validate an invoice for an accounting date that modifies a closed "
|
||||||
|
"cutoff (i.e. for which an accounting entry has already been created).\n"
|
||||||
|
" - Cut-off: {cutoff}\n"
|
||||||
|
" - Product: {product}\n"
|
||||||
|
" - Previous invoiced quantity: {prev_inv_qty}\n"
|
||||||
|
" - New invoiced quantity: {new_inv_qty}"
|
||||||
|
msgstr ""
|
||||||
|
"Vous ne pouvez pas valider une facture à une date comptable qui modifie une "
|
||||||
|
"provision fermée (càd pour laquelle l'écriture comptable de provision a déjà "
|
||||||
|
"été créée).\n"
|
||||||
|
" - Provision: {cutoff}\n"
|
||||||
|
" - Produit: {product}\n"
|
||||||
|
" - Précédente quantité facturée: {prev_inv_qty}\n"
|
||||||
|
" - Nouvelle quantité facturée: {new_inv_qty}"
|
||||||
|
|
||||||
|
#~ msgid "Companies"
|
||||||
|
#~ msgstr "Sociétés"
|
||||||
|
|
||||||
|
#~ msgid "Config Settings"
|
||||||
|
#~ msgstr "Paramètres de configuration"
|
||||||
|
|
||||||
|
#~ msgid "Cutoff Exclude Locked Orders"
|
||||||
|
#~ msgstr "Provision Exclure les commandes verrouillées"
|
||||||
|
|
||||||
|
#~ msgid "Exclude Locked Orders"
|
||||||
|
#~ msgstr "Exclure les commandes verrouillées"
|
||||||
|
|
@ -0,0 +1,158 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_cutoff_accrual_order_base
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 16.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"PO-Revision-Date: 2024-10-21 12: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_cutoff_accrual_order_base
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_cutoff_accrual_order_base.account_cutoff_form
|
||||||
|
msgid "<span> on </span>"
|
||||||
|
msgstr "<span> su </span>"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_account_cutoff
|
||||||
|
msgid "Account Cut-off"
|
||||||
|
msgstr "Scritture di fine periodo"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_account_cutoff_line
|
||||||
|
msgid "Account Cut-off Line"
|
||||||
|
msgstr "Riga scritture fine periodo"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__amount
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr "Valore"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,help:account_cutoff_accrual_order_base.field_account_cutoff_line__amount
|
||||||
|
msgid "Amount that is used as base to compute the Cut-off Amount."
|
||||||
|
msgstr "Valore utilizzato come base per calcolare il valore di fine periodo."
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__cutoff_amount
|
||||||
|
msgid "Cut-off Amount"
|
||||||
|
msgstr "Valore fine periodo"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,help:account_cutoff_accrual_order_base.field_account_cutoff_line__cutoff_amount
|
||||||
|
msgid "Cut-off Amount without taxes in the Company Currency."
|
||||||
|
msgstr "Valore fine periodo senza imposte nella valuta dell'azienda."
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_order_line_cutoff_accrual_mixin
|
||||||
|
msgid "Cutoff Accrual Order Line Mixin"
|
||||||
|
msgstr "Mixin riga ordine rateo di fine periodo"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_order_line_cutoff_accrual_mixin__is_cutoff_accrual_excluded
|
||||||
|
msgid "Do not generate cut-off entries"
|
||||||
|
msgstr "Non generare registrazioni di fine periodo"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Error: Missing '%(label)s' on tax '%(name)s'."
|
||||||
|
msgstr "Errore: manca '%(label)s' nell'imposta '%(name)s'."
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/account_cutoff.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Error: Missing {map_type} account on product '{product}' or on related "
|
||||||
|
"product category."
|
||||||
|
msgstr ""
|
||||||
|
"Errore: manca {map_type} conto nel prodotto '{product}' o nella categoria "
|
||||||
|
"prodotto relativa."
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__invoice_line_ids
|
||||||
|
#: model_terms:ir.ui.view,arch_db:account_cutoff_accrual_order_base.account_cutoff_line_form
|
||||||
|
msgid "Invoice Lines"
|
||||||
|
msgstr "Righe fattura"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__invoiced_qty
|
||||||
|
msgid "Invoiced Quantity"
|
||||||
|
msgstr "Quantità fatturata"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_base.model_account_move
|
||||||
|
msgid "Journal Entry"
|
||||||
|
msgstr "Registrazione contabile"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff__order_line_model
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__order_line_model
|
||||||
|
msgid "Order Line Model"
|
||||||
|
msgstr "Modello riga ordine"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__product_id
|
||||||
|
msgid "Product"
|
||||||
|
msgstr "Prodotto"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__quantity
|
||||||
|
msgid "Quantity"
|
||||||
|
msgstr "Quantità"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_base.field_account_cutoff_line__received_qty
|
||||||
|
msgid "Received Quantity"
|
||||||
|
msgstr "Quantità ricevuta"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Wrong cutoff type %s"
|
||||||
|
msgstr "Tipo registrazione fine periodo %s errato"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"You cannot validate an invoice for an accounting date that generates an entry in a closed cut-off (i.e. for which an accounting entry has already been created).\n"
|
||||||
|
" - Cut-off: {cutoff}\n"
|
||||||
|
" - Product: {product}\n"
|
||||||
|
msgstr ""
|
||||||
|
"Non è possibile convalidare una fattura per una data contabile che genera "
|
||||||
|
"una registrazione in una registrazione di fine periodo chiusa (ad esempio "
|
||||||
|
"per il quale è già stata creata una registrazione contabile).\n"
|
||||||
|
"- Registrazione di fine periodo: {cutoff}\n"
|
||||||
|
"- Prodotto: {product}\n"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_base
|
||||||
|
#. odoo-python
|
||||||
|
#: code:addons/account_cutoff_accrual_order_base/models/order_line_mixin.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"You cannot validate an invoice for an accounting date that modifies a closed cutoff (i.e. for which an accounting entry has already been created).\n"
|
||||||
|
" - Cut-off: {cutoff}\n"
|
||||||
|
" - Product: {product}\n"
|
||||||
|
" - Previous invoiced quantity: {prev_inv_qty}\n"
|
||||||
|
" - New invoiced quantity: {new_inv_qty}"
|
||||||
|
msgstr ""
|
||||||
|
"Non è possibile convalidare una fattura per una data contabile che modifica "
|
||||||
|
"una registrazione di fine periodo chiusa (ad esempio per il quale è già "
|
||||||
|
"stata creata una registrazione contabile).\n"
|
||||||
|
"- Registrazione di fine periodo: {cutoff}\n"
|
||||||
|
"- Prodotto: {product}\n"
|
||||||
|
"- Quantità fatturata precedente: {prev_inv_qty}\n"
|
||||||
|
"- Nuova quantità fatturata: {new_inv_qty}"
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
from . import account_cutoff
|
||||||
|
from . import account_cutoff_line
|
||||||
|
from . import order_line_mixin
|
||||||
|
from . import account_move
|
||||||
|
|
@ -0,0 +1,108 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
|
import logging
|
||||||
|
from datetime import datetime, time, timedelta
|
||||||
|
|
||||||
|
import pytz
|
||||||
|
from dateutil.relativedelta import relativedelta
|
||||||
|
|
||||||
|
from odoo import _, api, fields, models
|
||||||
|
from odoo.exceptions import UserError
|
||||||
|
from odoo.tools import split_every
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class AccountCutoff(models.Model):
|
||||||
|
_inherit = "account.cutoff"
|
||||||
|
|
||||||
|
order_line_model = fields.Selection(
|
||||||
|
selection=[],
|
||||||
|
readonly=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
def _nextday_start_dt(self):
|
||||||
|
"""Convert the cutoff date into datetime as start of next day."""
|
||||||
|
next_day = self.cutoff_date + timedelta(days=1)
|
||||||
|
tz = self.env.company.partner_id.tz or "UTC"
|
||||||
|
start_next_day = datetime.combine(
|
||||||
|
next_day, time(0, 0, 0, 0, tzinfo=pytz.timezone(tz))
|
||||||
|
)
|
||||||
|
return start_next_day.replace(tzinfo=None)
|
||||||
|
|
||||||
|
def _get_product_account(self, product, fpos):
|
||||||
|
if self.cutoff_type in "accrued_revenue":
|
||||||
|
map_type = "income"
|
||||||
|
elif self.cutoff_type in "accrued_expense":
|
||||||
|
map_type = "expense"
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
account = product.product_tmpl_id.get_product_accounts(fpos)[map_type]
|
||||||
|
if not account:
|
||||||
|
raise UserError(
|
||||||
|
_(
|
||||||
|
"Error: Missing {map_type} account on product '{product}' or on"
|
||||||
|
" related product category.",
|
||||||
|
).format(
|
||||||
|
map_type=map_type,
|
||||||
|
product=product.name,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return account
|
||||||
|
|
||||||
|
def get_lines(self):
|
||||||
|
self.ensure_one()
|
||||||
|
# If the computation of the cutoff is done at the cutoff date, then we
|
||||||
|
# only need to retrieve lines where there is a qty to invoice (i.e.
|
||||||
|
# delivered qty != invoiced qty).
|
||||||
|
# For any line where a move or an invoice has been done after the
|
||||||
|
# cutoff date, we need to recompute the quantities.
|
||||||
|
res = super().get_lines()
|
||||||
|
if not self.order_line_model:
|
||||||
|
return res
|
||||||
|
|
||||||
|
model = self.env[self.order_line_model]
|
||||||
|
_logger.debug("Get model lines")
|
||||||
|
line_ids = set(model.browse(model._get_cutoff_accrual_lines_query(self)).ids)
|
||||||
|
_logger.debug("Get model lines invoiced after")
|
||||||
|
line_ids |= set(model._get_cutoff_accrual_lines_invoiced_after(self).ids)
|
||||||
|
_logger.debug("Get model lines delivered after")
|
||||||
|
line_ids |= set(model._get_cutoff_accrual_lines_delivered_after(self).ids)
|
||||||
|
|
||||||
|
_logger.debug("Prepare cutoff lines per chunks")
|
||||||
|
# A good chunk size is per 1000. If bigger, it is not faster but memory
|
||||||
|
# usage increases. If too low, then it takes more cpu time.
|
||||||
|
for chunk in split_every(models.INSERT_BATCH_SIZE * 10, tuple(line_ids)):
|
||||||
|
lines = model.browse(chunk)
|
||||||
|
values = []
|
||||||
|
for line in lines:
|
||||||
|
data = line._prepare_cutoff_accrual_line(self)
|
||||||
|
if not data:
|
||||||
|
continue
|
||||||
|
values.append(data)
|
||||||
|
self.env["account.cutoff.line"].create(values)
|
||||||
|
# free memory usage
|
||||||
|
self.env.invalidate_all()
|
||||||
|
_logger.debug("Prepare cutoff lines - next chunk")
|
||||||
|
return res
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _cron_cutoff(self, cutoff_type, model):
|
||||||
|
# Cron is expected to run at begin of new period. We need the last day
|
||||||
|
# of previous month. Support some time difference and compute last day
|
||||||
|
# of previous period.
|
||||||
|
last_day = datetime.today()
|
||||||
|
if last_day.day > 20:
|
||||||
|
last_day += relativedelta(months=1)
|
||||||
|
last_day = last_day.replace(day=1)
|
||||||
|
last_day -= relativedelta(days=1)
|
||||||
|
cutoff = self.with_context(default_cutoff_type=cutoff_type).create(
|
||||||
|
{
|
||||||
|
"cutoff_date": last_day,
|
||||||
|
"cutoff_type": cutoff_type,
|
||||||
|
"order_line_model": model,
|
||||||
|
"auto_reverse": True,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
cutoff.get_lines()
|
||||||
|
|
@ -0,0 +1,69 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# Copyright 2013 Alexis de Lattre (Akretion) <alexis.delattre@akretion.com>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
|
from odoo import api, fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class AccountCutoffLine(models.Model):
|
||||||
|
_inherit = "account.cutoff.line"
|
||||||
|
|
||||||
|
order_line_model = fields.Selection(related="parent_id.order_line_model")
|
||||||
|
|
||||||
|
product_id = fields.Many2one(
|
||||||
|
comodel_name="product.product", string="Product", readonly=True
|
||||||
|
)
|
||||||
|
received_qty = fields.Float("Received Quantity", readonly=True)
|
||||||
|
invoiced_qty = fields.Float("Invoiced Quantity", readonly=True)
|
||||||
|
invoice_line_ids = fields.One2many(
|
||||||
|
"account.move.line",
|
||||||
|
compute="_compute_invoice_lines",
|
||||||
|
string="Invoice Lines",
|
||||||
|
)
|
||||||
|
quantity = fields.Float(compute="_compute_quantity", store=True)
|
||||||
|
amount = fields.Monetary(compute="_compute_amount", store=True)
|
||||||
|
cutoff_amount = fields.Monetary(compute="_compute_cutoff_amount", store=True)
|
||||||
|
|
||||||
|
def _get_order_line(self):
|
||||||
|
self.ensure_one()
|
||||||
|
return
|
||||||
|
|
||||||
|
def _compute_invoice_lines(self):
|
||||||
|
return
|
||||||
|
|
||||||
|
@api.depends("invoiced_qty", "received_qty")
|
||||||
|
def _compute_quantity(self):
|
||||||
|
for rec in self:
|
||||||
|
if not rec.parent_id.order_line_model:
|
||||||
|
continue
|
||||||
|
rec.quantity = rec.received_qty - rec.invoiced_qty
|
||||||
|
|
||||||
|
@api.depends("price_unit", "quantity")
|
||||||
|
def _compute_amount(self):
|
||||||
|
for rec in self:
|
||||||
|
if not rec.parent_id.order_line_model:
|
||||||
|
continue
|
||||||
|
if rec.parent_id.cutoff_type == "accrued_revenue":
|
||||||
|
amount = rec.quantity * rec.price_unit
|
||||||
|
elif rec.parent_id.cutoff_type == "accrued_expense":
|
||||||
|
amount = -rec.quantity * rec.price_unit
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
rec.amount = rec.company_currency_id.round(amount)
|
||||||
|
|
||||||
|
@api.depends("amount")
|
||||||
|
def _compute_cutoff_amount(self):
|
||||||
|
for rec in self:
|
||||||
|
if not rec.parent_id.order_line_model:
|
||||||
|
continue
|
||||||
|
if rec.parent_id.state == "done":
|
||||||
|
continue
|
||||||
|
if rec.company_currency_id != rec.currency_id:
|
||||||
|
currency_at_date = rec.currency_id.with_context(
|
||||||
|
date=rec.parent_id.cutoff_date
|
||||||
|
)
|
||||||
|
rec.cutoff_amount = currency_at_date.compute(
|
||||||
|
rec.amount, rec.company_currency_id
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
rec.cutoff_amount = rec.amount
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from odoo import models
|
||||||
|
|
||||||
|
|
||||||
|
class AccountMove(models.Model):
|
||||||
|
_inherit = "account.move"
|
||||||
|
|
||||||
|
def _post(self, soft=True):
|
||||||
|
res = super()._post(soft=soft)
|
||||||
|
self._update_cutoff_accrual_order()
|
||||||
|
return res
|
||||||
|
|
||||||
|
def unlink(self):
|
||||||
|
# In case the invoice was posted, we need to check any affected cutoff
|
||||||
|
self._update_cutoff_accrual_order()
|
||||||
|
return super().unlink()
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_order_lines(self):
|
||||||
|
"""Return a list of order lines to process"""
|
||||||
|
self.ensure_one()
|
||||||
|
return []
|
||||||
|
|
||||||
|
def _update_cutoff_accrual_order(self):
|
||||||
|
for move in self:
|
||||||
|
if not move.is_invoice():
|
||||||
|
continue
|
||||||
|
for model_order_lines in move.sudo()._get_cutoff_accrual_order_lines():
|
||||||
|
for order_line in model_order_lines:
|
||||||
|
# In case invoice lines have been created and posted in one
|
||||||
|
# transaction, we need to clear the cache of invoice lines
|
||||||
|
# on the cutoff lines
|
||||||
|
order_line.account_cutoff_line_ids.invalidate_recordset(
|
||||||
|
["invoice_line_ids"]
|
||||||
|
)
|
||||||
|
order_line._update_cutoff_accrual(move.date)
|
||||||
|
|
@ -0,0 +1,273 @@
|
||||||
|
# Copyright 2013 Alexis de Lattre (Akretion) <alexis.delattre@akretion.com>
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from odoo import Command, _, api, fields, models
|
||||||
|
from odoo.exceptions import UserError
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class OrderLineCutoffAccrualMixin(models.AbstractModel):
|
||||||
|
_name = "order.line.cutoff.accrual.mixin"
|
||||||
|
_description = "Cutoff Accrual Order Line Mixin"
|
||||||
|
|
||||||
|
is_cutoff_accrual_excluded = fields.Boolean(
|
||||||
|
string="Do not generate cut-off entries",
|
||||||
|
readonly=True,
|
||||||
|
inverse=lambda r: r._inverse_is_cutoff_accrual_excluded(),
|
||||||
|
)
|
||||||
|
|
||||||
|
def _inverse_is_cutoff_accrual_excluded(self):
|
||||||
|
for rec in self:
|
||||||
|
rec.sudo()._update_cutoff_accrual()
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_partner(self):
|
||||||
|
self.ensure_one()
|
||||||
|
return self.order_id.partner_id
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_fiscal_position(self):
|
||||||
|
self.ensure_one()
|
||||||
|
return self.order_id.fiscal_position_id
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_product(self):
|
||||||
|
self.ensure_one()
|
||||||
|
return self.product_id
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_product_qty(self):
|
||||||
|
return self.product_qty
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_price_unit(self):
|
||||||
|
self.ensure_one()
|
||||||
|
product_qty = self._get_cutoff_accrual_product_qty()
|
||||||
|
if product_qty:
|
||||||
|
return self.price_subtotal / product_qty
|
||||||
|
return 0
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_invoice_lines(self):
|
||||||
|
self.ensure_one()
|
||||||
|
return self.invoice_lines
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_invoiced_quantity(self, cutoff):
|
||||||
|
self.ensure_one()
|
||||||
|
cutoff_nextday = cutoff._nextday_start_dt()
|
||||||
|
invoiced_qty = sum(
|
||||||
|
line.quantity
|
||||||
|
* (-1 if line.move_id.move_type in ("in_refund", "out_refund") else 1)
|
||||||
|
for line in self._get_cutoff_accrual_invoice_lines()
|
||||||
|
if (
|
||||||
|
line.move_id.state == "posted"
|
||||||
|
and line.move_id.date <= cutoff.cutoff_date
|
||||||
|
)
|
||||||
|
or (
|
||||||
|
line.move_id.state == "draft"
|
||||||
|
and line.move_id.move_type == "in_refund"
|
||||||
|
and line.move_id.create_date < cutoff_nextday
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return invoiced_qty
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_lines_invoiced_after(self, cutoff):
|
||||||
|
"""Return order lines"""
|
||||||
|
return NotImplemented()
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_line_delivered_after(self, cutoff):
|
||||||
|
"""Return order lines"""
|
||||||
|
return self.browse()
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_delivered_service_quantity(self, cutoff):
|
||||||
|
return NotImplemented()
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_delivered_stock_quantity(self, cutoff):
|
||||||
|
return NotImplemented()
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_delivered_quantity(self, cutoff):
|
||||||
|
self.ensure_one()
|
||||||
|
if self.product_id.detailed_type == "service":
|
||||||
|
return self._get_cutoff_accrual_delivered_service_quantity(cutoff)
|
||||||
|
return self._get_cutoff_accrual_delivered_stock_quantity(cutoff)
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_lines_delivered_after(self, cutoff):
|
||||||
|
return self.browse()
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_delivered_min_date(self):
|
||||||
|
"""Return first delivery date"""
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_taxes(self, cutoff, quantity):
|
||||||
|
self.ensure_one()
|
||||||
|
if cutoff.cutoff_type == "accrued_revenue":
|
||||||
|
tax_account_field_name = "account_accrued_revenue_id"
|
||||||
|
tax_account_field_label = "Accrued Revenue Tax Account"
|
||||||
|
sign = 1
|
||||||
|
elif cutoff.cutoff_type == "accrued_expense":
|
||||||
|
tax_account_field_name = "account_accrued_expense_id"
|
||||||
|
tax_account_field_label = "Accrued Expense Tax Account"
|
||||||
|
sign = -1
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
tax_line_ids = [Command.clear()]
|
||||||
|
base_line = self._convert_to_tax_base_line_dict()
|
||||||
|
base_line["quantity"] = quantity
|
||||||
|
tax_info = self.env["account.tax"]._compute_taxes([base_line])
|
||||||
|
for tax_line in tax_info["tax_lines_to_add"]:
|
||||||
|
amount = tax_line["tax_amount"] * sign
|
||||||
|
if cutoff.company_currency_id != self.currency_id:
|
||||||
|
currency_at_date = self.currency_id.with_context(
|
||||||
|
date=self.parent_id.cutoff_date
|
||||||
|
)
|
||||||
|
tax_cutoff_amount = currency_at_date.compute(
|
||||||
|
amount, cutoff.company_currency_id
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
tax_cutoff_amount = amount
|
||||||
|
tax = self.env["account.tax"].browse(tax_line["tax_id"])
|
||||||
|
tax_cutoff_account_id = tax[tax_account_field_name]
|
||||||
|
if not tax_cutoff_account_id:
|
||||||
|
raise UserError(
|
||||||
|
_(
|
||||||
|
"Error: Missing '%(label)s' on tax '%(name)s'.",
|
||||||
|
label=tax_account_field_label,
|
||||||
|
name=tax.display_name,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
tax_line_ids.append(
|
||||||
|
Command.create(
|
||||||
|
{
|
||||||
|
"tax_id": tax_line["tax_id"],
|
||||||
|
"base": tax_line["base_amount"],
|
||||||
|
"amount": amount,
|
||||||
|
"cutoff_account_id": tax_cutoff_account_id.id,
|
||||||
|
"cutoff_amount": tax_cutoff_amount,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return tax_line_ids
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _get_cutoff_accrual_lines_domain(self, cutoff):
|
||||||
|
domain = []
|
||||||
|
domain.append(("is_cutoff_accrual_excluded", "!=", True))
|
||||||
|
return domain
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _get_cutoff_accrual_lines_query(self, cutoff):
|
||||||
|
domain = self._get_cutoff_accrual_lines_domain(cutoff)
|
||||||
|
self._flush_search(domain)
|
||||||
|
query = self._where_calc(domain)
|
||||||
|
self._apply_ir_rules(query, "read")
|
||||||
|
return query
|
||||||
|
|
||||||
|
def _prepare_cutoff_accrual_line(self, cutoff):
|
||||||
|
"""
|
||||||
|
Calculate accrual using order line
|
||||||
|
"""
|
||||||
|
self.ensure_one()
|
||||||
|
if cutoff.cutoff_type not in ("accrued_expense", "accrued_revenue"):
|
||||||
|
return UserError(_("Wrong cutoff type %s") % cutoff.cutoff_type)
|
||||||
|
price_unit = self._get_cutoff_accrual_price_unit()
|
||||||
|
if not price_unit:
|
||||||
|
return {}
|
||||||
|
fpos = self._get_cutoff_accrual_fiscal_position()
|
||||||
|
account = cutoff._get_product_account(self.product_id, fpos)
|
||||||
|
cutoff_account_id = cutoff._get_mapping_dict().get(account.id, account.id)
|
||||||
|
res = {
|
||||||
|
"parent_id": cutoff.id,
|
||||||
|
"partner_id": self._get_cutoff_accrual_partner().id,
|
||||||
|
"name": self.name,
|
||||||
|
"account_id": account.id,
|
||||||
|
"cutoff_account_id": cutoff_account_id,
|
||||||
|
"analytic_distribution": self.analytic_distribution,
|
||||||
|
"currency_id": self.currency_id.id,
|
||||||
|
"product_id": self._get_cutoff_accrual_product().id,
|
||||||
|
"price_unit": price_unit,
|
||||||
|
}
|
||||||
|
delivered_qty = self._get_cutoff_accrual_delivered_quantity(cutoff)
|
||||||
|
invoiced_qty = self._get_cutoff_accrual_invoiced_quantity(cutoff)
|
||||||
|
if delivered_qty == invoiced_qty:
|
||||||
|
return {}
|
||||||
|
res["received_qty"] = delivered_qty
|
||||||
|
res["invoiced_qty"] = invoiced_qty
|
||||||
|
quantity = delivered_qty - invoiced_qty
|
||||||
|
if self.env.company.accrual_taxes:
|
||||||
|
res["tax_line_ids"] = self._get_cutoff_accrual_taxes(cutoff, quantity)
|
||||||
|
return res
|
||||||
|
|
||||||
|
def _update_cutoff_accrual(self, date=False):
|
||||||
|
self.ensure_one()
|
||||||
|
if self.is_cutoff_accrual_excluded:
|
||||||
|
self.account_cutoff_line_ids.filtered(
|
||||||
|
lambda line: line.parent_id.state != "done"
|
||||||
|
).unlink()
|
||||||
|
return
|
||||||
|
for cutoff_line in self.account_cutoff_line_ids:
|
||||||
|
cutoff = cutoff_line.parent_id
|
||||||
|
invoiced_qty = (
|
||||||
|
cutoff_line._get_order_line()._get_cutoff_accrual_invoiced_quantity(
|
||||||
|
cutoff
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if cutoff.state == "done" and invoiced_qty != cutoff_line.invoiced_qty:
|
||||||
|
raise UserError(
|
||||||
|
_(
|
||||||
|
"You cannot validate an invoice for an accounting date "
|
||||||
|
"that modifies a closed cutoff (i.e. for which an "
|
||||||
|
"accounting entry has already been created).\n"
|
||||||
|
" - Cut-off: {cutoff}\n"
|
||||||
|
" - Product: {product}\n"
|
||||||
|
" - Previous invoiced quantity: {prev_inv_qty}\n"
|
||||||
|
" - New invoiced quantity: {new_inv_qty}"
|
||||||
|
).format(
|
||||||
|
cutoff=cutoff.display_name,
|
||||||
|
product=cutoff_line.product_id.display_name,
|
||||||
|
prev_inv_qty=cutoff_line.invoiced_qty,
|
||||||
|
new_inv_qty=invoiced_qty,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
cutoff_line.invoiced_qty = invoiced_qty
|
||||||
|
# search missing cutoff entries - start at first reception
|
||||||
|
domain = [
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
"not in",
|
||||||
|
self.account_cutoff_line_ids.parent_id.ids,
|
||||||
|
),
|
||||||
|
("cutoff_type", "in", ("accrued_expense", "accrued_revenue")),
|
||||||
|
("order_line_model", "=", self._name),
|
||||||
|
("company_id", "=", self.company_id.id),
|
||||||
|
]
|
||||||
|
if date:
|
||||||
|
# When invoice is updated
|
||||||
|
delivery_min_date = self._get_cutoff_accrual_delivered_min_date()
|
||||||
|
if delivery_min_date:
|
||||||
|
date = min(delivery_min_date, date)
|
||||||
|
else:
|
||||||
|
date = date
|
||||||
|
domain.append(("cutoff_date", ">=", date))
|
||||||
|
else:
|
||||||
|
# When is_cutoff_accrual_excluded is removed
|
||||||
|
domain.append(("state", "!=", "done"))
|
||||||
|
cutoffs = self.env["account.cutoff"].sudo().search(domain)
|
||||||
|
values = []
|
||||||
|
for cutoff in cutoffs:
|
||||||
|
data = self._prepare_cutoff_accrual_line(cutoff)
|
||||||
|
if not data:
|
||||||
|
continue
|
||||||
|
if cutoff.state == "done":
|
||||||
|
raise UserError(
|
||||||
|
_(
|
||||||
|
"You cannot validate an invoice for an accounting date "
|
||||||
|
"that generates an entry in a closed cut-off (i.e. for "
|
||||||
|
"which an accounting entry has already been created).\n"
|
||||||
|
" - Cut-off: {cutoff}\n"
|
||||||
|
" - Product: {product}\n"
|
||||||
|
).format(
|
||||||
|
cutoff=cutoff.display_name,
|
||||||
|
product=self.product_id.display_name,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
values.append(data)
|
||||||
|
if values:
|
||||||
|
self.env["account.cutoff.line"].sudo().create(values)
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
To configure this module, you need to:
|
||||||
|
|
||||||
|
#. Go to the accounting settings to select the journals and accounts used for
|
||||||
|
the cutoff.
|
||||||
|
#. Analytic accounting needs to be enable in Accounting - Settings.
|
||||||
|
#. If you want to also accrue the taxes, you need in Accounting - Taxes, for
|
||||||
|
each type of taxes an accrued tax account.
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
* Alexis de Lattre (Akretion) <alexis.delattre@akretion.com>
|
||||||
|
* Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
* Thierry Ducrest <thierry.ducrest@camptocamp.com>
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
This module extends the functionality of account_cutoff_base
|
||||||
|
to allow the computation of expense and revenue cutoffs on orders.
|
||||||
|
|
||||||
|
The accrual is computed by comparing on the order, the quantity
|
||||||
|
delivered/received and the quantity invoiced. In case, some deliveries or
|
||||||
|
invoices have occurred after the cutoff date, those quantities can be affected
|
||||||
|
and are recomputed. This allows to quickly generate a cutoff snapshot by
|
||||||
|
processing few lines.
|
||||||
|
|
||||||
|
You can configure to disable the generation of cutoff entries on orders.
|
||||||
|
For instance, if you know you will never receive the missing invoiced goods,
|
||||||
|
you can disable cutoff entries on a purchase order.
|
||||||
|
|
||||||
|
Once the cutoff lines have been generated but the accounting entries are not yet
|
||||||
|
created, you are still able to create or modify invoices before the accounting
|
||||||
|
butoff date. The cutoff lines will be adapted automatically to reflect the new
|
||||||
|
situation.
|
||||||
|
|
||||||
|
Once the cutoff accounting entries are generated you cannot create or modify
|
||||||
|
invoices before the accounting cutoff date.
|
||||||
|
Nevertheless, you can still reset to draft a supplier invoice but you won't be
|
||||||
|
able to modify any amount. You are then supposed to re-validate the invoice.
|
||||||
|
|
||||||
|
Warning: This module is replacing account_cutoff_picking and is incompatible with it.
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
|
|
@ -0,0 +1,458 @@
|
||||||
|
<!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 Cut-off Accrual Order Base</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-cut-off-accrual-order-base">
|
||||||
|
<h1 class="title">Account Cut-off Accrual Order Base</h1>
|
||||||
|
|
||||||
|
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
!! This file is generated by oca-gen-addon-readme !!
|
||||||
|
!! changes will be overwritten. !!
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
!! source digest: sha256:32932cbcf82dafa4ab85129328cb8347b3e3260836bc2495421e1c7462909d0d
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||||
|
<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-closing/tree/16.0/account_cutoff_accrual_order_base"><img alt="OCA/account-closing" src="https://img.shields.io/badge/github-OCA%2Faccount--closing-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-closing-16-0/account-closing-16-0-account_cutoff_accrual_order_base"><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-closing&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 extends the functionality of account_cutoff_base
|
||||||
|
to allow the computation of expense and revenue cutoffs on orders.</p>
|
||||||
|
<p>The accrual is computed by comparing on the order, the quantity
|
||||||
|
delivered/received and the quantity invoiced. In case, some deliveries or
|
||||||
|
invoices have occurred after the cutoff date, those quantities can be affected
|
||||||
|
and are recomputed. This allows to quickly generate a cutoff snapshot by
|
||||||
|
processing few lines.</p>
|
||||||
|
<p>You can configure to disable the generation of cutoff entries on orders.
|
||||||
|
For instance, if you know you will never receive the missing invoiced goods,
|
||||||
|
you can disable cutoff entries on a purchase order.</p>
|
||||||
|
<p>Once the cutoff lines have been generated but the accounting entries are not yet
|
||||||
|
created, you are still able to create or modify invoices before the accounting
|
||||||
|
butoff date. The cutoff lines will be adapted automatically to reflect the new
|
||||||
|
situation.</p>
|
||||||
|
<p>Once the cutoff accounting entries are generated you cannot create or modify
|
||||||
|
invoices before the accounting cutoff date.
|
||||||
|
Nevertheless, you can still reset to draft a supplier invoice but you won’t be
|
||||||
|
able to modify any amount. You are then supposed to re-validate the invoice.</p>
|
||||||
|
<p>Warning: This module is replacing account_cutoff_picking and is incompatible with it.</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="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
|
||||||
|
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
|
||||||
|
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
|
||||||
|
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
|
||||||
|
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="configuration">
|
||||||
|
<h1><a class="toc-backref" href="#toc-entry-1">Configuration</a></h1>
|
||||||
|
<p>To configure this module, you need to:</p>
|
||||||
|
<ol class="arabic simple">
|
||||||
|
<li>Go to the accounting settings to select the journals and accounts used for
|
||||||
|
the cutoff.</li>
|
||||||
|
<li>Analytic accounting needs to be enable in Accounting - Settings.</li>
|
||||||
|
<li>If you want to also accrue the taxes, you need in Accounting - Taxes, for
|
||||||
|
each type of taxes an accrued tax account.</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="bug-tracker">
|
||||||
|
<h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
|
||||||
|
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-closing/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-closing/issues/new?body=module:%20account_cutoff_accrual_order_base%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-3">Credits</a></h1>
|
||||||
|
<div class="section" id="authors">
|
||||||
|
<h2><a class="toc-backref" href="#toc-entry-4">Authors</a></h2>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>BCIM</li>
|
||||||
|
<li>Akretion</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="contributors">
|
||||||
|
<h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Alexis de Lattre (Akretion) <<a class="reference external" href="mailto:alexis.delattre@akretion.com">alexis.delattre@akretion.com</a>></li>
|
||||||
|
<li>Jacques-Etienne Baudoux (BCIM) <<a class="reference external" href="mailto:je@bcim.be">je@bcim.be</a>></li>
|
||||||
|
<li>Thierry Ducrest <<a class="reference external" href="mailto:thierry.ducrest@camptocamp.com">thierry.ducrest@camptocamp.com</a>></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="maintainers">
|
||||||
|
<h2><a class="toc-backref" href="#toc-entry-6">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>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
|
||||||
|
<p><a class="reference external image-reference" href="https://github.com/jbaudoux"><img alt="jbaudoux" src="https://github.com/jbaudoux.png?size=40px" /></a></p>
|
||||||
|
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-closing/tree/16.0/account_cutoff_accrual_order_base">OCA/account-closing</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,79 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
from odoo.tests.common import TransactionCase
|
||||||
|
|
||||||
|
|
||||||
|
class TestAccountCutoffAccrualOrderCommon(TransactionCase):
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls):
|
||||||
|
super().setUpClass()
|
||||||
|
cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
|
||||||
|
cls.company = cls.env.ref("base.main_company")
|
||||||
|
cls.cutoff_journal = cls.env["account.journal"].create(
|
||||||
|
{
|
||||||
|
"code": "cop0",
|
||||||
|
"company_id": cls.company.id,
|
||||||
|
"name": "Cutoff Journal Picking",
|
||||||
|
"type": "general",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
cls.cutoff_account = cls.env["account.account"].create(
|
||||||
|
{
|
||||||
|
"name": "Cutoff account",
|
||||||
|
"code": "ACC480000",
|
||||||
|
"company_id": cls.company.id,
|
||||||
|
"account_type": "liability_current",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
cls.company.write(
|
||||||
|
{
|
||||||
|
"default_accrued_revenue_account_id": cls.cutoff_account.id,
|
||||||
|
"default_accrued_expense_account_id": cls.cutoff_account.id,
|
||||||
|
"default_cutoff_journal_id": cls.cutoff_journal.id,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
cls.partner = cls.env.ref("base.res_partner_1")
|
||||||
|
cls.products = cls.env.ref("product.product_delivery_01") | cls.env.ref(
|
||||||
|
"product.product_delivery_02"
|
||||||
|
)
|
||||||
|
cls.products |= cls.env.ref("product.expense_product")
|
||||||
|
# analytic account
|
||||||
|
cls.default_plan = cls.env["account.analytic.plan"].create(
|
||||||
|
{"name": "Default", "company_id": False}
|
||||||
|
)
|
||||||
|
cls.analytic_account = cls.env["account.analytic.account"].create(
|
||||||
|
{
|
||||||
|
"name": "analytic_account",
|
||||||
|
"plan_id": cls.default_plan.id,
|
||||||
|
"company_id": False,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
def _refund_invoice(self, invoice, post=True):
|
||||||
|
credit_note_wizard = (
|
||||||
|
self.env["account.move.reversal"]
|
||||||
|
.with_context(
|
||||||
|
**{
|
||||||
|
"active_ids": invoice.ids,
|
||||||
|
"active_id": invoice.id,
|
||||||
|
"active_model": "account.move",
|
||||||
|
"tz": self.env.company.partner_id.tz or "UTC",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.create(
|
||||||
|
{
|
||||||
|
"refund_method": "refund",
|
||||||
|
"reason": "refund",
|
||||||
|
"journal_id": invoice.journal_id.id,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
invoice_refund = self.env["account.move"].browse(
|
||||||
|
credit_note_wizard.reverse_moves()["res_id"]
|
||||||
|
)
|
||||||
|
invoice_refund.ref = invoice_refund.id
|
||||||
|
if post:
|
||||||
|
invoice_refund.action_post()
|
||||||
|
return invoice_refund
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!--
|
||||||
|
Copyright 2013 Alexis de Lattre (Akretion) <alexis.delattre@akretion.com>
|
||||||
|
Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
-->
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<!-- Form view for lines -->
|
||||||
|
<record id="account_cutoff_line_form" model="ir.ui.view">
|
||||||
|
<field name="model">account.cutoff.line</field>
|
||||||
|
<field name="inherit_id" ref="account_cutoff_base.account_cutoff_line_form" />
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="name" position="before">
|
||||||
|
<field name="order_line_model" invisible="1" />
|
||||||
|
<field
|
||||||
|
name="product_id"
|
||||||
|
attrs="{'invisible': [('order_line_model', '=', False)]}"
|
||||||
|
/>
|
||||||
|
</field>
|
||||||
|
<field name="quantity" position="before">
|
||||||
|
<field
|
||||||
|
name="received_qty"
|
||||||
|
attrs="{'invisible': [('order_line_model', '=', False)]}"
|
||||||
|
/>
|
||||||
|
<field
|
||||||
|
name="invoiced_qty"
|
||||||
|
attrs="{'invisible': [('order_line_model', '=', False)]}"
|
||||||
|
/>
|
||||||
|
</field>
|
||||||
|
<group name="tax" position="before">
|
||||||
|
<group
|
||||||
|
name="invoicelines"
|
||||||
|
string="Invoice Lines"
|
||||||
|
attrs="{'invisible': [('order_line_model', '=', False)]}"
|
||||||
|
>
|
||||||
|
<field name="invoice_line_ids" nolabel="1" colspan="2">
|
||||||
|
<tree>
|
||||||
|
<field name="move_id" />
|
||||||
|
<field name="quantity" />
|
||||||
|
<field name="date" />
|
||||||
|
<field name="parent_state" />
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Tree view for lines -->
|
||||||
|
<record id="account_cutoff_line_tree" model="ir.ui.view">
|
||||||
|
<field name="model">account.cutoff.line</field>
|
||||||
|
<field name="inherit_id" ref="account_cutoff_base.account_cutoff_line_tree" />
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="parent_id" position="after">
|
||||||
|
<!--field
|
||||||
|
name="order_id"
|
||||||
|
attrs="{'invisible': [('order_line_model', '=', False)]}" />
|
||||||
|
/-->
|
||||||
|
</field>
|
||||||
|
<field name="quantity" position="after">
|
||||||
|
<field name="order_line_model" invisible="1" />
|
||||||
|
<field
|
||||||
|
name="received_qty"
|
||||||
|
attrs="{'invisible': [('order_line_model', '=', False)]}"
|
||||||
|
/>
|
||||||
|
<field
|
||||||
|
name="invoiced_qty"
|
||||||
|
attrs="{'invisible': [('order_line_model', '=', False)]}"
|
||||||
|
/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!--
|
||||||
|
Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
-->
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="account_cutoff_form" model="ir.ui.view">
|
||||||
|
<field name="model">account.cutoff</field>
|
||||||
|
<field name="inherit_id" ref="account_cutoff_base.account_cutoff_form" />
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="cutoff_type" position="after">
|
||||||
|
<span> on </span><field name="order_line_model" />
|
||||||
|
</field>
|
||||||
|
<field name="source_move_state" position="attributes">
|
||||||
|
<attribute
|
||||||
|
name="attrs"
|
||||||
|
>{'invisible': [('order_line_model', '!=', False)]}</attribute>
|
||||||
|
</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_cutoff_accrual_order_base Module - account_cutoff_accrual_order_base
|
||||||
|
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_cutoff_accrual_order_base. 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_cutoff_base](../../odoo-bringout-oca-account-closing-account_cutoff_base)
|
||||||
|
|
@ -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_cutoff_accrual_order_base or install in UI.
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Install
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install odoo-bringout-oca-account-closing-account_cutoff_accrual_order_base"
|
||||||
|
# or
|
||||||
|
uv pip install odoo-bringout-oca-account-closing-account_cutoff_accrual_order_base"
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
# Models
|
||||||
|
|
||||||
|
Detected core models and extensions in account_cutoff_accrual_order_base.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
classDiagram
|
||||||
|
class order_line_cutoff_accrual_mixin
|
||||||
|
class account_cutoff
|
||||||
|
class account_cutoff_line
|
||||||
|
class account_move
|
||||||
|
```
|
||||||
|
|
||||||
|
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_cutoff_accrual_order_base. Provides features documented in upstream Odoo 16 under this addon.
|
||||||
|
|
||||||
|
- Source: OCA/OCB 16.0, addon account_cutoff_accrual_order_base
|
||||||
|
- 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_cutoff_accrual_order_base
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Wizards
|
||||||
|
|
||||||
|
This module does not include UI wizards.
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
[project]
|
||||||
|
name = "odoo-bringout-oca-account-closing-account_cutoff_accrual_order_base"
|
||||||
|
version = "16.0.0"
|
||||||
|
description = "Account Cut-off Accrual Order Base - Accrued Order Base"
|
||||||
|
authors = [
|
||||||
|
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
|
||||||
|
]
|
||||||
|
dependencies = [
|
||||||
|
"odoo-bringout-oca-account-closing-account_cutoff_base>=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_cutoff_accrual_order_base"]
|
||||||
|
|
||||||
|
[tool.rye]
|
||||||
|
managed = true
|
||||||
|
dev-dependencies = [
|
||||||
|
"pytest>=8.4.1",
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
# Account Cut-off Accrual Order Stock Base
|
||||||
|
|
||||||
|
Odoo addon: account_cutoff_accrual_order_stock_base
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install odoo-bringout-oca-account-closing-account_cutoff_accrual_order_stock_base
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
This addon depends on:
|
||||||
|
- account_cutoff_base
|
||||||
|
- stock
|
||||||
|
|
||||||
|
## Manifest Information
|
||||||
|
|
||||||
|
- **Name**: Account Cut-off Accrual Order Stock Base
|
||||||
|
- **Version**: 16.0.1.0.0
|
||||||
|
- **Category**: Accounting & Finance
|
||||||
|
- **License**: AGPL-3
|
||||||
|
- **Installable**: True
|
||||||
|
|
||||||
|
## Source
|
||||||
|
|
||||||
|
Based on [OCA/account-closing](https://github.com/OCA/account-closing) branch 16.0, addon `account_cutoff_accrual_order_stock_base`.
|
||||||
|
|
||||||
|
## 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,86 @@
|
||||||
|
========================================
|
||||||
|
Account Cut-off Accrual Order Stock Base
|
||||||
|
========================================
|
||||||
|
|
||||||
|
..
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
!! This file is generated by oca-gen-addon-readme !!
|
||||||
|
!! changes will be overwritten. !!
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
!! source digest: sha256:791c43ae54bd1847ebd5e0f75ad43368499c624e2ec8f67b58ac0e33b1a4a60c
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
.. |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--closing-lightgray.png?logo=github
|
||||||
|
:target: https://github.com/OCA/account-closing/tree/16.0/account_cutoff_accrual_order_stock_base
|
||||||
|
:alt: OCA/account-closing
|
||||||
|
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
||||||
|
:target: https://translation.odoo-community.org/projects/account-closing-16-0/account-closing-16-0-account_cutoff_accrual_order_stock_base
|
||||||
|
: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-closing&target_branch=16.0
|
||||||
|
:alt: Try me on Runboat
|
||||||
|
|
||||||
|
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||||
|
|
||||||
|
This module extends the functionality of account_cutoff_base
|
||||||
|
to define prepaid accounts for prepaid goods in the scope of accrued revenue
|
||||||
|
and expense.
|
||||||
|
|
||||||
|
**Table of contents**
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
:local:
|
||||||
|
|
||||||
|
Bug Tracker
|
||||||
|
===========
|
||||||
|
|
||||||
|
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-closing/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-closing/issues/new?body=module:%20account_cutoff_accrual_order_stock_base%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
|
||||||
|
~~~~~~~
|
||||||
|
|
||||||
|
* BCIM
|
||||||
|
|
||||||
|
Contributors
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
|
||||||
|
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-jbaudoux| image:: https://github.com/jbaudoux.png?size=40px
|
||||||
|
:target: https://github.com/jbaudoux
|
||||||
|
:alt: jbaudoux
|
||||||
|
|
||||||
|
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|
||||||
|
|
||||||
|
|maintainer-jbaudoux|
|
||||||
|
|
||||||
|
This module is part of the `OCA/account-closing <https://github.com/OCA/account-closing/tree/16.0/account_cutoff_accrual_order_stock_base>`_ project on GitHub.
|
||||||
|
|
||||||
|
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
from . import models
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "Account Cut-off Accrual Order Stock Base",
|
||||||
|
"version": "16.0.1.0.0",
|
||||||
|
"category": "Accounting & Finance",
|
||||||
|
"license": "AGPL-3",
|
||||||
|
"summary": "Accrued Order Stock Base",
|
||||||
|
"author": "BCIM, Odoo Community Association (OCA)",
|
||||||
|
"maintainers": ["jbaudoux"],
|
||||||
|
"website": "https://github.com/OCA/account-closing",
|
||||||
|
"depends": ["account_cutoff_base", "stock"],
|
||||||
|
"data": [
|
||||||
|
"views/account_cutoff_view.xml",
|
||||||
|
],
|
||||||
|
"installable": True,
|
||||||
|
"application": False,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_cutoff_accrual_order_stock_base
|
||||||
|
#
|
||||||
|
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_cutoff_accrual_order_stock_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_stock_base.model_account_cutoff
|
||||||
|
msgid "Account Cut-off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_stock_base
|
||||||
|
#: model:ir.model.fields,help:account_cutoff_accrual_order_stock_base.field_account_cutoff__cutoff_account_prepaid_stock_id
|
||||||
|
msgid ""
|
||||||
|
"Account for accrual of prepaid stock expenses. For instance, goods invoiced "
|
||||||
|
"and not yet received."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_stock_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_stock_base.field_account_cutoff__cutoff_account_prepaid_stock_id
|
||||||
|
msgid "Cut-off Prepaid Stock Account"
|
||||||
|
msgstr ""
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_cutoff_accrual_order_stock_base
|
||||||
|
#
|
||||||
|
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_cutoff_accrual_order_stock_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_stock_base.model_account_cutoff
|
||||||
|
msgid "Account Cut-off"
|
||||||
|
msgstr "Računovodstveno presjecanje"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_stock_base
|
||||||
|
#: model:ir.model.fields,help:account_cutoff_accrual_order_stock_base.field_account_cutoff__cutoff_account_prepaid_stock_id
|
||||||
|
msgid ""
|
||||||
|
"Account for accrual of prepaid stock expenses. For instance, goods invoiced "
|
||||||
|
"and not yet received."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_stock_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_stock_base.field_account_cutoff__cutoff_account_prepaid_stock_id
|
||||||
|
msgid "Cut-off Prepaid Stock Account"
|
||||||
|
msgstr "Račun za prepaid zalihe presjecanja"
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_cutoff_accrual_order_stock_base
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 16.0+e\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2023-10-26 12:01+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 12:01+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_cutoff_accrual_order_stock_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_stock_base.model_account_cutoff
|
||||||
|
msgid "Account Cut-off"
|
||||||
|
msgstr "Provision"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_stock_base
|
||||||
|
#: model:ir.model.fields,help:account_cutoff_accrual_order_stock_base.field_account_cutoff__cutoff_account_prepaid_stock_id
|
||||||
|
msgid ""
|
||||||
|
"Account for accrual of prepaid stock expenses. For instance, goods invoiced "
|
||||||
|
"and not yet received."
|
||||||
|
msgstr ""
|
||||||
|
"Compte pour les provisions sur charges de type marchandise constatées "
|
||||||
|
"d'avance. Par exemple, les marchandises facturées et pas encore reçues."
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_stock_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_stock_base.field_account_cutoff__cutoff_account_prepaid_stock_id
|
||||||
|
msgid "Cut-off Prepaid Stock Account"
|
||||||
|
msgstr "Compte de provision pour marchandise prépayée"
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_cutoff_accrual_order_stock_base
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 16.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"PO-Revision-Date: 2024-10-21 12: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_cutoff_accrual_order_stock_base
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_order_stock_base.model_account_cutoff
|
||||||
|
msgid "Account Cut-off"
|
||||||
|
msgstr "Scritture di fine periodo"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_stock_base
|
||||||
|
#: model:ir.model.fields,help:account_cutoff_accrual_order_stock_base.field_account_cutoff__cutoff_account_prepaid_stock_id
|
||||||
|
msgid ""
|
||||||
|
"Account for accrual of prepaid stock expenses. For instance, goods invoiced "
|
||||||
|
"and not yet received."
|
||||||
|
msgstr ""
|
||||||
|
"Conto ratei costi giacenze prepagati. Esempio, merce fatturata non ancora "
|
||||||
|
"ricevuta."
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_order_stock_base
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_order_stock_base.field_account_cutoff__cutoff_account_prepaid_stock_id
|
||||||
|
msgid "Cut-off Prepaid Stock Account"
|
||||||
|
msgstr "Conto scritture di chiusura giacenze prepagate"
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
from . import account_cutoff
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
|
from odoo import Command, api, fields, models
|
||||||
|
from odoo.tools import float_is_zero
|
||||||
|
|
||||||
|
|
||||||
|
class AccountCutoff(models.Model):
|
||||||
|
_inherit = "account.cutoff"
|
||||||
|
|
||||||
|
cutoff_account_prepaid_stock_id = fields.Many2one(
|
||||||
|
comodel_name="account.account",
|
||||||
|
string="Cut-off Prepaid Stock Account",
|
||||||
|
domain="[('deprecated', '=', False)]",
|
||||||
|
states={"done": [("readonly", True)]},
|
||||||
|
check_company=True,
|
||||||
|
tracking=True,
|
||||||
|
default=lambda self: self._default_cutoff_account_prepaid_stock_id(),
|
||||||
|
help="Account for accrual of prepaid stock expenses. "
|
||||||
|
"For instance, goods invoiced and not yet received.",
|
||||||
|
)
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _default_cutoff_account_prepaid_stock_id(self):
|
||||||
|
cutoff_type = self.env.context.get("default_cutoff_type")
|
||||||
|
company = self.env.company
|
||||||
|
if cutoff_type == "accrued_expense":
|
||||||
|
account_id = company.default_prepaid_expense_account_id.id or False
|
||||||
|
elif cutoff_type == "accrued_revenue":
|
||||||
|
account_id = company.default_prepaid_revenue_account_id.id or False
|
||||||
|
else:
|
||||||
|
account_id = False
|
||||||
|
return account_id
|
||||||
|
|
||||||
|
def _prepare_counterpart_moves(
|
||||||
|
self, to_provision, amount_total_pos, amount_total_neg
|
||||||
|
):
|
||||||
|
if not self.cutoff_account_prepaid_stock_id:
|
||||||
|
return super()._prepare_counterpart_moves(
|
||||||
|
to_provision, amount_total_pos, amount_total_neg
|
||||||
|
)
|
||||||
|
if self.cutoff_type == "accrued_revenue":
|
||||||
|
prepaid_amount = amount_total_neg
|
||||||
|
amount = amount_total_pos
|
||||||
|
elif self.cutoff_type == "accrued_expense":
|
||||||
|
prepaid_amount = amount_total_pos
|
||||||
|
amount = amount_total_neg
|
||||||
|
else:
|
||||||
|
prepaid_amount = 0
|
||||||
|
amount = 0
|
||||||
|
company_currency = self.company_id.currency_id
|
||||||
|
cur_rprec = company_currency.rounding
|
||||||
|
movelines_to_create = super()._prepare_counterpart_moves(
|
||||||
|
to_provision, 0, amount
|
||||||
|
)
|
||||||
|
if not float_is_zero(prepaid_amount, precision_rounding=cur_rprec):
|
||||||
|
movelines_to_create.append(
|
||||||
|
Command.create(
|
||||||
|
{
|
||||||
|
"account_id": self.cutoff_account_prepaid_stock_id.id,
|
||||||
|
"debit": prepaid_amount,
|
||||||
|
"credit": 0,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return movelines_to_create
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
* Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
This module extends the functionality of account_cutoff_base
|
||||||
|
to define prepaid accounts for prepaid goods in the scope of accrued revenue
|
||||||
|
and expense.
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
|
|
@ -0,0 +1,425 @@
|
||||||
|
<?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 Cut-off Accrual Order Stock Base</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-cut-off-accrual-order-stock-base">
|
||||||
|
<h1 class="title">Account Cut-off Accrual Order Stock Base</h1>
|
||||||
|
|
||||||
|
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
!! This file is generated by oca-gen-addon-readme !!
|
||||||
|
!! changes will be overwritten. !!
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
!! source digest: sha256:791c43ae54bd1847ebd5e0f75ad43368499c624e2ec8f67b58ac0e33b1a4a60c
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||||
|
<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-closing/tree/16.0/account_cutoff_accrual_order_stock_base"><img alt="OCA/account-closing" src="https://img.shields.io/badge/github-OCA%2Faccount--closing-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-closing-16-0/account-closing-16-0-account_cutoff_accrual_order_stock_base"><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-closing&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 extends the functionality of account_cutoff_base
|
||||||
|
to define prepaid accounts for prepaid goods in the scope of accrued revenue
|
||||||
|
and expense.</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-closing/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-closing/issues/new?body=module:%20account_cutoff_accrual_order_stock_base%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>BCIM</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="contributors">
|
||||||
|
<h2><a class="toc-backref" href="#toc-entry-4">Contributors</a></h2>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Jacques-Etienne Baudoux (BCIM) <<a class="reference external" href="mailto:je@bcim.be">je@bcim.be</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>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
|
||||||
|
<p><a class="reference external image-reference" href="https://github.com/jbaudoux"><img alt="jbaudoux" src="https://github.com/jbaudoux.png?size=40px" /></a></p>
|
||||||
|
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-closing/tree/16.0/account_cutoff_accrual_order_stock_base">OCA/account-closing</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,22 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!--
|
||||||
|
Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
-->
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="account_cutoff_form" model="ir.ui.view">
|
||||||
|
<field name="model">account.cutoff</field>
|
||||||
|
<field name="inherit_id" ref="account_cutoff_base.account_cutoff_form" />
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="cutoff_account_id" position="after">
|
||||||
|
<field
|
||||||
|
name="cutoff_account_prepaid_stock_id"
|
||||||
|
required="1"
|
||||||
|
options="{'no_create': True}"
|
||||||
|
/>
|
||||||
|
</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_cutoff_accrual_order_stock_base Module - account_cutoff_accrual_order_stock_base
|
||||||
|
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_cutoff_accrual_order_stock_base. 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,6 @@
|
||||||
|
# Dependencies
|
||||||
|
|
||||||
|
This addon depends on:
|
||||||
|
|
||||||
|
- [account_cutoff_base](../../odoo-bringout-oca-account-closing-account_cutoff_base)
|
||||||
|
- [stock](../../odoo-bringout-oca-ocb-stock)
|
||||||
|
|
@ -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_cutoff_accrual_order_stock_base or install in UI.
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Install
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install odoo-bringout-oca-account-closing-account_cutoff_accrual_order_stock_base"
|
||||||
|
# or
|
||||||
|
uv pip install odoo-bringout-oca-account-closing-account_cutoff_accrual_order_stock_base"
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
# Models
|
||||||
|
|
||||||
|
Detected core models and extensions in account_cutoff_accrual_order_stock_base.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
classDiagram
|
||||||
|
class account_cutoff
|
||||||
|
```
|
||||||
|
|
||||||
|
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_cutoff_accrual_order_stock_base. Provides features documented in upstream Odoo 16 under this addon.
|
||||||
|
|
||||||
|
- Source: OCA/OCB 16.0, addon account_cutoff_accrual_order_stock_base
|
||||||
|
- 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_cutoff_accrual_order_stock_base
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Wizards
|
||||||
|
|
||||||
|
This module does not include UI wizards.
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
[project]
|
||||||
|
name = "odoo-bringout-oca-account-closing-account_cutoff_accrual_order_stock_base"
|
||||||
|
version = "16.0.0"
|
||||||
|
description = "Account Cut-off Accrual Order Stock Base - Accrued Order Stock Base"
|
||||||
|
authors = [
|
||||||
|
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
|
||||||
|
]
|
||||||
|
dependencies = [
|
||||||
|
"odoo-bringout-oca-account-closing-account_cutoff_base>=16.0.0",
|
||||||
|
"odoo-bringout-oca-ocb-stock>=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_cutoff_accrual_order_stock_base"]
|
||||||
|
|
||||||
|
[tool.rye]
|
||||||
|
managed = true
|
||||||
|
dev-dependencies = [
|
||||||
|
"pytest>=8.4.1",
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
# Account Cut-off Accrual Purchase
|
||||||
|
|
||||||
|
Odoo addon: account_cutoff_accrual_purchase
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install odoo-bringout-oca-account-closing-account_cutoff_accrual_purchase
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
This addon depends on:
|
||||||
|
- account_cutoff_accrual_order_base
|
||||||
|
- purchase
|
||||||
|
- purchase_force_invoiced
|
||||||
|
|
||||||
|
## Manifest Information
|
||||||
|
|
||||||
|
- **Name**: Account Cut-off Accrual Purchase
|
||||||
|
- **Version**: 16.0.1.0.0
|
||||||
|
- **Category**: Accounting & Finance
|
||||||
|
- **License**: AGPL-3
|
||||||
|
- **Installable**: True
|
||||||
|
|
||||||
|
## Source
|
||||||
|
|
||||||
|
Based on [OCA/account-closing](https://github.com/OCA/account-closing) branch 16.0, addon `account_cutoff_accrual_purchase`.
|
||||||
|
|
||||||
|
## 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,153 @@
|
||||||
|
================================
|
||||||
|
Account Cut-off Accrual Purchase
|
||||||
|
================================
|
||||||
|
|
||||||
|
..
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
!! This file is generated by oca-gen-addon-readme !!
|
||||||
|
!! changes will be overwritten. !!
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
!! source digest: sha256:a0536b91a6e1c6035a5c0a21557f7bf3d7c392b59c460a6ab9ed1e40d9f6180c
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
.. |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--closing-lightgray.png?logo=github
|
||||||
|
:target: https://github.com/OCA/account-closing/tree/16.0/account_cutoff_accrual_purchase
|
||||||
|
:alt: OCA/account-closing
|
||||||
|
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
||||||
|
:target: https://translation.odoo-community.org/projects/account-closing-16-0/account-closing-16-0-account_cutoff_accrual_purchase
|
||||||
|
: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-closing&target_branch=16.0
|
||||||
|
:alt: Try me on Runboat
|
||||||
|
|
||||||
|
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||||
|
|
||||||
|
This module extends the functionality of account_cutoff_accrual_order_base
|
||||||
|
to allow the computation of expense cutoffs on purchase orders.
|
||||||
|
|
||||||
|
The accrual is computed by comparing on the order, the quantity
|
||||||
|
delivered/received and the quantity invoiced. In case, some deliveries or
|
||||||
|
invoices have occurred after the cutoff date, those quantities can be affected
|
||||||
|
and are recomputed. This allows to quickly generate a cutoff snapshot by
|
||||||
|
processing few lines.
|
||||||
|
|
||||||
|
For PO, you can make the difference between:
|
||||||
|
* invoice to receive (received qty > invoiced qty)
|
||||||
|
* goods to receive (prepayment) (received qty < invoiced qty)
|
||||||
|
|
||||||
|
If you expect a refund, you can make it in draft. In standard, this update
|
||||||
|
the PO and the quantity will not be accrued as goods to receive. You can accrue
|
||||||
|
the draft credit note as "credit notes to receive".
|
||||||
|
|
||||||
|
Orders forced in status invoiced won't have cutoff entries.
|
||||||
|
For instance, if you know you will never receive the missing invoiced goods,
|
||||||
|
you can force it as invoiced.
|
||||||
|
|
||||||
|
Once the cutoff lines have been generated but the accounting entries are not yet
|
||||||
|
created, you are still able to create or modify invoices before the accounting
|
||||||
|
butoff date. The cutoff lines will be adapted automatically to reflect the new
|
||||||
|
situation.
|
||||||
|
|
||||||
|
Once the cutoff accounting entries are generated you cannot create or modify
|
||||||
|
invoices before the accounting cutoff date.
|
||||||
|
Nevertheless, you can still reset to draft a supplier invoice but you won't be
|
||||||
|
able to modify any amount. You are then supposed to re-validate the invoice.
|
||||||
|
|
||||||
|
**Table of contents**
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
:local:
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
=============
|
||||||
|
|
||||||
|
To configure this module, you need to:
|
||||||
|
|
||||||
|
#. Go to the accounting settings to select the journals and accounts used for
|
||||||
|
the cutoff.
|
||||||
|
#. Analytic accounting needs to be enable in Accounting - Settings.
|
||||||
|
#. If you want to also accrue the taxes, you need in Accounting - Taxes, for
|
||||||
|
each type of taxes an accrued tax account.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
=====
|
||||||
|
|
||||||
|
To use this module, you need to:
|
||||||
|
|
||||||
|
#. Go to Accounting - Cut-offs to configure and generate the cutoffs
|
||||||
|
|
||||||
|
Examples
|
||||||
|
========
|
||||||
|
|
||||||
|
* Purchase Order with quantity received: 0, quantity invoiced: 0
|
||||||
|
This will not make an cutoff entry
|
||||||
|
|
||||||
|
* Purchase Order with quantity received: 10, quantity invoiced: 0
|
||||||
|
This will make an cutoff entry with invoice to receive: 10
|
||||||
|
|
||||||
|
* Purchase Order with quantity received: 0, quantity invoiced: 10
|
||||||
|
This will make an cutoff entry with goods to receive: 10
|
||||||
|
|
||||||
|
* Purchase Order with quantity received: 10, quantity invoiced: 0
|
||||||
|
This will make an cutoff entry with invoice to receive: 10
|
||||||
|
Invoice is encoded after the cut-off date but dated before the cut-off date
|
||||||
|
The cutoff entry is updated in the existing cut-off
|
||||||
|
|
||||||
|
* Purchase Order with quantity received: 0, quantity invoiced: 0
|
||||||
|
This will not make an cutoff entry
|
||||||
|
Invoice is encoded after the cut-off date but dated before the cut-off date
|
||||||
|
An cutoff entry is added in the existing cut-off
|
||||||
|
|
||||||
|
Bug Tracker
|
||||||
|
===========
|
||||||
|
|
||||||
|
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-closing/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-closing/issues/new?body=module:%20account_cutoff_accrual_purchase%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
|
||||||
|
~~~~~~~
|
||||||
|
|
||||||
|
* BCIM
|
||||||
|
|
||||||
|
Contributors
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
|
||||||
|
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-jbaudoux| image:: https://github.com/jbaudoux.png?size=40px
|
||||||
|
:target: https://github.com/jbaudoux
|
||||||
|
:alt: jbaudoux
|
||||||
|
|
||||||
|
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|
||||||
|
|
||||||
|
|maintainer-jbaudoux|
|
||||||
|
|
||||||
|
This module is part of the `OCA/account-closing <https://github.com/OCA/account-closing/tree/16.0/account_cutoff_accrual_purchase>`_ project on GitHub.
|
||||||
|
|
||||||
|
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
from . import models
|
||||||
|
from .hooks import post_init_hook
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "Account Cut-off Accrual Purchase",
|
||||||
|
"version": "16.0.1.0.0",
|
||||||
|
"category": "Accounting & Finance",
|
||||||
|
"license": "AGPL-3",
|
||||||
|
"summary": "Accrued Expense on Purchase Order",
|
||||||
|
"author": "BCIM, Odoo Community Association (OCA)",
|
||||||
|
"maintainers": ["jbaudoux"],
|
||||||
|
"website": "https://github.com/OCA/account-closing",
|
||||||
|
"depends": [
|
||||||
|
"account_cutoff_accrual_order_base",
|
||||||
|
"purchase",
|
||||||
|
"purchase_force_invoiced",
|
||||||
|
],
|
||||||
|
"data": [
|
||||||
|
"views/account_cutoff.xml",
|
||||||
|
"views/account_cutoff_line.xml",
|
||||||
|
"data/ir_cron.xml",
|
||||||
|
],
|
||||||
|
"post_init_hook": "post_init_hook",
|
||||||
|
"installable": True,
|
||||||
|
"application": True,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo noupdate="1">
|
||||||
|
|
||||||
|
<record forcecreate="True" id="ir_cron_cutoff" model="ir.cron">
|
||||||
|
<field name="name">Make cutoff at end of period - purchase order lines</field>
|
||||||
|
<field eval="True" name="active" />
|
||||||
|
<field name="model_id" ref="account_cutoff_base.model_account_cutoff" />
|
||||||
|
<field name="state">code</field>
|
||||||
|
<field
|
||||||
|
name="code"
|
||||||
|
>model._cron_cutoff("accrued_expense", "purchase.order.line")</field>
|
||||||
|
<field name="user_id" ref="base.user_root" />
|
||||||
|
<field name="interval_number">1</field>
|
||||||
|
<field name="interval_type">months</field>
|
||||||
|
<field name="numbercall">-1</field>
|
||||||
|
<field eval="False" name="doall" />
|
||||||
|
<field name="nextcall" eval="(DateTime.now()).strftime('%Y-%m-01 00:00:00')" />
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
# Copyright 2023 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
|
|
||||||
|
def post_init_hook(cr, registry):
|
||||||
|
cr.execute(
|
||||||
|
"""
|
||||||
|
UPDATE purchase_order_line
|
||||||
|
SET is_cutoff_accrual_excluded = TRUE
|
||||||
|
WHERE order_id IN
|
||||||
|
( SELECT id FROM purchase_order WHERE force_invoiced )
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,90 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_cutoff_accrual_purchase
|
||||||
|
#
|
||||||
|
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_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_account_cutoff
|
||||||
|
msgid "Account Cut-off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_account_cutoff_line
|
||||||
|
msgid "Account Cut-off Line"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_purchase_order_line__account_cutoff_line_ids
|
||||||
|
msgid "Account Cutoff Lines"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.actions.act_window,name:account_cutoff_accrual_purchase.account_accrual_action
|
||||||
|
#: model:ir.ui.menu,name:account_cutoff_accrual_purchase.account_accrual_menu
|
||||||
|
msgid "Accrued Expense on Purchase Orders"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model_terms:ir.actions.act_window,help:account_cutoff_accrual_purchase.account_accrual_action
|
||||||
|
msgid "Click to start preparing a new expense accrual."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_purchase_order_line__is_cutoff_accrual_excluded
|
||||||
|
msgid "Do not generate cut-off entries"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_account_move
|
||||||
|
msgid "Journal Entry"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.actions.server,name:account_cutoff_accrual_purchase.ir_cron_cutoff_ir_actions_server
|
||||||
|
#: model:ir.cron,cron_name:account_cutoff_accrual_purchase.ir_cron_cutoff
|
||||||
|
msgid "Make cutoff at end of period - purchase order lines"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_account_cutoff__order_line_model
|
||||||
|
msgid "Order Line Model"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_account_cutoff_line__purchase_order_id
|
||||||
|
msgid "Order Reference"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_purchase_order
|
||||||
|
msgid "Purchase Order"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_purchase_order_line
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_account_cutoff_line__purchase_line_id
|
||||||
|
msgid "Purchase Order Line"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields.selection,name:account_cutoff_accrual_purchase.selection__account_cutoff__order_line_model__purchase_order_line
|
||||||
|
msgid "Purchase Orders"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model_terms:ir.actions.act_window,help:account_cutoff_accrual_purchase.account_accrual_action
|
||||||
|
msgid ""
|
||||||
|
"This view can be used by accountants in order to collect information about "
|
||||||
|
"accrued expenses. It then allows to generate the corresponding cut-off "
|
||||||
|
"journal entry in one click."
|
||||||
|
msgstr ""
|
||||||
|
|
@ -0,0 +1,90 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_cutoff_accrual_purchase
|
||||||
|
#
|
||||||
|
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_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_account_cutoff
|
||||||
|
msgid "Account Cut-off"
|
||||||
|
msgstr "Računovodstveno presjecanje"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_account_cutoff_line
|
||||||
|
msgid "Account Cut-off Line"
|
||||||
|
msgstr "Linija računovodstvenog presjecanja"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_purchase_order_line__account_cutoff_line_ids
|
||||||
|
msgid "Account Cutoff Lines"
|
||||||
|
msgstr "Linije računovodstvenog presjecanja"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.actions.act_window,name:account_cutoff_accrual_purchase.account_accrual_action
|
||||||
|
#: model:ir.ui.menu,name:account_cutoff_accrual_purchase.account_accrual_menu
|
||||||
|
msgid "Accrued Expense on Purchase Orders"
|
||||||
|
msgstr "Akruelni trošak na narudžbama nabavke"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model_terms:ir.actions.act_window,help:account_cutoff_accrual_purchase.account_accrual_action
|
||||||
|
msgid "Click to start preparing a new expense accrual."
|
||||||
|
msgstr "Kliknite da počnete pripremu novog akruala troška."
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_purchase_order_line__is_cutoff_accrual_excluded
|
||||||
|
msgid "Do not generate cut-off entries"
|
||||||
|
msgstr "Ne generiši zapise presjecanja"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_account_move
|
||||||
|
msgid "Journal Entry"
|
||||||
|
msgstr "Žurnal"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.actions.server,name:account_cutoff_accrual_purchase.ir_cron_cutoff_ir_actions_server
|
||||||
|
#: model:ir.cron,cron_name:account_cutoff_accrual_purchase.ir_cron_cutoff
|
||||||
|
msgid "Make cutoff at end of period - purchase order lines"
|
||||||
|
msgstr "Napravi presjecanje na kraju perioda - linije narudžbi nabavke"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_account_cutoff__order_line_model
|
||||||
|
msgid "Order Line Model"
|
||||||
|
msgstr "Model linije narudžbe"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_account_cutoff_line__purchase_order_id
|
||||||
|
msgid "Order Reference"
|
||||||
|
msgstr "Referenca narudžbe"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_purchase_order
|
||||||
|
msgid "Purchase Order"
|
||||||
|
msgstr "Nalog za nabavu"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_purchase_order_line
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_account_cutoff_line__purchase_line_id
|
||||||
|
msgid "Purchase Order Line"
|
||||||
|
msgstr "Stavka naloga za nabavu"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields.selection,name:account_cutoff_accrual_purchase.selection__account_cutoff__order_line_model__purchase_order_line
|
||||||
|
msgid "Purchase Orders"
|
||||||
|
msgstr "Nalozi u nabavi"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model_terms:ir.actions.act_window,help:account_cutoff_accrual_purchase.account_accrual_action
|
||||||
|
msgid ""
|
||||||
|
"This view can be used by accountants in order to collect information about "
|
||||||
|
"accrued expenses. It then allows to generate the corresponding cut-off "
|
||||||
|
"journal entry in one click."
|
||||||
|
msgstr ""
|
||||||
|
|
@ -0,0 +1,94 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_cutoff_accrual_purchase
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 16.0+e\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2023-10-26 11:44+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-10-26 11:44+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_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_account_cutoff
|
||||||
|
msgid "Account Cut-off"
|
||||||
|
msgstr "Provision"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_account_cutoff_line
|
||||||
|
msgid "Account Cut-off Line"
|
||||||
|
msgstr "Ligne de provision"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_purchase_order_line__account_cutoff_line_ids
|
||||||
|
msgid "Account Cutoff Lines"
|
||||||
|
msgstr "Lignes de provision"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.actions.act_window,name:account_cutoff_accrual_purchase.account_accrual_action
|
||||||
|
#: model:ir.ui.menu,name:account_cutoff_accrual_purchase.account_accrual_menu
|
||||||
|
msgid "Accrued Expense on Purchase Orders"
|
||||||
|
msgstr "Provisions sur Achats"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model_terms:ir.actions.act_window,help:account_cutoff_accrual_purchase.account_accrual_action
|
||||||
|
msgid "Click to start preparing a new expense accrual."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_purchase_order_line__is_cutoff_accrual_excluded
|
||||||
|
msgid "Do not generate cut-off entries"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_account_move
|
||||||
|
msgid "Journal Entry"
|
||||||
|
msgstr "Pièce comptable"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.actions.server,name:account_cutoff_accrual_purchase.ir_cron_cutoff_ir_actions_server
|
||||||
|
#: model:ir.cron,cron_name:account_cutoff_accrual_purchase.ir_cron_cutoff
|
||||||
|
msgid "Make cutoff at end of period - purchase order lines"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_account_cutoff__order_line_model
|
||||||
|
msgid "Order Line Model"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_account_cutoff_line__purchase_order_id
|
||||||
|
msgid "Order Reference"
|
||||||
|
msgstr "Commande"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_purchase_order
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Purchase Order"
|
||||||
|
msgstr "Achats"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_purchase_order_line
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_account_cutoff_line__purchase_line_id
|
||||||
|
msgid "Purchase Order Line"
|
||||||
|
msgstr "Ligne de commande d'achat"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields.selection,name:account_cutoff_accrual_purchase.selection__account_cutoff__order_line_model__purchase_order_line
|
||||||
|
msgid "Purchase Orders"
|
||||||
|
msgstr "Achats"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model_terms:ir.actions.act_window,help:account_cutoff_accrual_purchase.account_accrual_action
|
||||||
|
msgid ""
|
||||||
|
"This view can be used by accountants in order to collect information about "
|
||||||
|
"accrued expenses. It then allows to generate the corresponding cut-off "
|
||||||
|
"journal entry in one click."
|
||||||
|
msgstr ""
|
||||||
|
|
@ -0,0 +1,96 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * account_cutoff_accrual_purchase
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 16.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"PO-Revision-Date: 2024-10-21 12: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_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_account_cutoff
|
||||||
|
msgid "Account Cut-off"
|
||||||
|
msgstr "Scritture di fine periodo"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_account_cutoff_line
|
||||||
|
msgid "Account Cut-off Line"
|
||||||
|
msgstr "Riga scritture fine periodo"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_purchase_order_line__account_cutoff_line_ids
|
||||||
|
msgid "Account Cutoff Lines"
|
||||||
|
msgstr "Righe scritture fine periodo"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.actions.act_window,name:account_cutoff_accrual_purchase.account_accrual_action
|
||||||
|
#: model:ir.ui.menu,name:account_cutoff_accrual_purchase.account_accrual_menu
|
||||||
|
msgid "Accrued Expense on Purchase Orders"
|
||||||
|
msgstr "Rateo passivo degli ordini di acquisto"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model_terms:ir.actions.act_window,help:account_cutoff_accrual_purchase.account_accrual_action
|
||||||
|
msgid "Click to start preparing a new expense accrual."
|
||||||
|
msgstr "Fare clic per iniziare a preparare un nuovo rateo passivo."
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_purchase_order_line__is_cutoff_accrual_excluded
|
||||||
|
msgid "Do not generate cut-off entries"
|
||||||
|
msgstr "Non generare registrazioni di fine periodo"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_account_move
|
||||||
|
msgid "Journal Entry"
|
||||||
|
msgstr "Registrazione contabile"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.actions.server,name:account_cutoff_accrual_purchase.ir_cron_cutoff_ir_actions_server
|
||||||
|
#: model:ir.cron,cron_name:account_cutoff_accrual_purchase.ir_cron_cutoff
|
||||||
|
msgid "Make cutoff at end of period - purchase order lines"
|
||||||
|
msgstr "Crea registrazioni alla fine del periodo - righe ordine di acquisto"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_account_cutoff__order_line_model
|
||||||
|
msgid "Order Line Model"
|
||||||
|
msgstr "Modello riga ordine"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_account_cutoff_line__purchase_order_id
|
||||||
|
msgid "Order Reference"
|
||||||
|
msgstr "Riferimento ordine"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_purchase_order
|
||||||
|
msgid "Purchase Order"
|
||||||
|
msgstr "Ordine di acquisto"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model,name:account_cutoff_accrual_purchase.model_purchase_order_line
|
||||||
|
#: model:ir.model.fields,field_description:account_cutoff_accrual_purchase.field_account_cutoff_line__purchase_line_id
|
||||||
|
msgid "Purchase Order Line"
|
||||||
|
msgstr "Riga ordine di acquisto"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model:ir.model.fields.selection,name:account_cutoff_accrual_purchase.selection__account_cutoff__order_line_model__purchase_order_line
|
||||||
|
msgid "Purchase Orders"
|
||||||
|
msgstr "Ordini di acquisto"
|
||||||
|
|
||||||
|
#. module: account_cutoff_accrual_purchase
|
||||||
|
#: model_terms:ir.actions.act_window,help:account_cutoff_accrual_purchase.account_accrual_action
|
||||||
|
msgid ""
|
||||||
|
"This view can be used by accountants in order to collect information about "
|
||||||
|
"accrued expenses. It then allows to generate the corresponding cut-off "
|
||||||
|
"journal entry in one click."
|
||||||
|
msgstr ""
|
||||||
|
"Questa vista può essere usata dai contabili per raccogliere informazioni sui "
|
||||||
|
"ratei passivi. Permette di generare la relativa registrazione di "
|
||||||
|
"ripartizione con un clic."
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from . import account_cutoff
|
||||||
|
from . import account_cutoff_line
|
||||||
|
from . import purchase_order
|
||||||
|
from . import purchase_order_line
|
||||||
|
from . import account_move
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
|
from odoo import fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class AccountCutoff(models.Model):
|
||||||
|
_inherit = "account.cutoff"
|
||||||
|
|
||||||
|
order_line_model = fields.Selection(
|
||||||
|
selection_add=[("purchase.order.line", "Purchase Orders")]
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
|
||||||
|
from odoo import api, fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class AccountCutoffLine(models.Model):
|
||||||
|
_inherit = "account.cutoff.line"
|
||||||
|
|
||||||
|
purchase_line_id = fields.Many2one(
|
||||||
|
comodel_name="purchase.order.line", string="Purchase Order Line", readonly=True
|
||||||
|
)
|
||||||
|
purchase_order_id = fields.Many2one(related="purchase_line_id.order_id")
|
||||||
|
|
||||||
|
def _get_order_line(self):
|
||||||
|
if self.purchase_line_id:
|
||||||
|
return self.purchase_line_id
|
||||||
|
return super()._get_order_line()
|
||||||
|
|
||||||
|
@api.depends("purchase_line_id")
|
||||||
|
def _compute_invoice_lines(self):
|
||||||
|
for rec in self:
|
||||||
|
if rec.purchase_line_id:
|
||||||
|
rec.invoice_line_ids = rec.purchase_line_id.invoice_lines
|
||||||
|
super()._compute_invoice_lines()
|
||||||
|
return
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from odoo import models
|
||||||
|
|
||||||
|
|
||||||
|
class AccountMove(models.Model):
|
||||||
|
_inherit = "account.move"
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_order_lines(self):
|
||||||
|
"""Return a list of order lines to process"""
|
||||||
|
res = super()._get_cutoff_accrual_order_lines()
|
||||||
|
if self.move_type in ("in_invoice", "in_refund"):
|
||||||
|
res.append(self.invoice_line_ids.purchase_line_id)
|
||||||
|
return res
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
# Copyright 2023 Jacques-Etienne Baudoux (BCIM sprl) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from odoo import models
|
||||||
|
|
||||||
|
|
||||||
|
class PurchaseOrder(models.Model):
|
||||||
|
_inherit = "purchase.order"
|
||||||
|
|
||||||
|
def write(self, vals):
|
||||||
|
res = super().write(vals)
|
||||||
|
if "force_invoiced" in vals:
|
||||||
|
self.order_line.is_cutoff_accrual_excluded = vals["force_invoiced"]
|
||||||
|
return res
|
||||||
|
|
@ -0,0 +1,102 @@
|
||||||
|
# Copyright 2018 Jacques-Etienne Baudoux (BCIM sprl) <je@bcim.be>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from odoo import api, fields, models
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class PurchaseOrderLine(models.Model):
|
||||||
|
_name = "purchase.order.line"
|
||||||
|
_inherit = ["purchase.order.line", "order.line.cutoff.accrual.mixin"]
|
||||||
|
|
||||||
|
account_cutoff_line_ids = fields.One2many(
|
||||||
|
"account.cutoff.line",
|
||||||
|
"purchase_line_id",
|
||||||
|
string="Account Cutoff Lines",
|
||||||
|
readonly=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
is_cutoff_accrual_excluded = fields.Boolean(
|
||||||
|
compute="_compute_is_cutoff_accrual_excluded",
|
||||||
|
store=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
@api.depends("order_id.force_invoiced")
|
||||||
|
def _compute_is_cutoff_accrual_excluded(self):
|
||||||
|
for rec in self:
|
||||||
|
rec.is_cutoff_accrual_excluded = rec.order_id.force_invoiced
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_lines_domain(self, cutoff):
|
||||||
|
domain = super()._get_cutoff_accrual_lines_domain(cutoff)
|
||||||
|
domain.append(("order_id.state", "in", ("purchase", "done")))
|
||||||
|
domain.append(("order_id.invoice_status", "!=", "invoiced"))
|
||||||
|
return domain
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _get_cutoff_accrual_lines_query(self, cutoff):
|
||||||
|
query = super()._get_cutoff_accrual_lines_query(cutoff)
|
||||||
|
self.flush_model(["display_type", "qty_received", "qty_invoiced"])
|
||||||
|
query.add_where(
|
||||||
|
f'"{self._table}".display_type IS NULL AND '
|
||||||
|
f'"{self._table}".qty_received != "{self._table}".qty_invoiced'
|
||||||
|
)
|
||||||
|
return query
|
||||||
|
|
||||||
|
def _prepare_cutoff_accrual_line(self, cutoff):
|
||||||
|
res = super()._prepare_cutoff_accrual_line(cutoff)
|
||||||
|
if not res:
|
||||||
|
return
|
||||||
|
res["purchase_line_id"] = self.id
|
||||||
|
return res
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_lines_invoiced_after(self, cutoff):
|
||||||
|
cutoff_nextday = cutoff._nextday_start_dt()
|
||||||
|
# Take all invoices impacting the cutoff
|
||||||
|
# FIXME: what about ("move_id.payment_state", "=", "invoicing_legacy")
|
||||||
|
domain = [
|
||||||
|
("purchase_line_id.is_cutoff_accrual_excluded", "!=", True),
|
||||||
|
("move_id.move_type", "in", ("in_invoice", "in_refund")),
|
||||||
|
("purchase_line_id", "!=", False),
|
||||||
|
"|",
|
||||||
|
("move_id.state", "=", "draft"),
|
||||||
|
"&",
|
||||||
|
("move_id.state", "=", "posted"),
|
||||||
|
("move_id.date", ">=", cutoff_nextday),
|
||||||
|
]
|
||||||
|
invoice_line_after = self.env["account.move.line"].search(domain, order="id")
|
||||||
|
_logger.debug(
|
||||||
|
"Purchase Invoice Lines done after cutoff: %s" % len(invoice_line_after)
|
||||||
|
)
|
||||||
|
if not invoice_line_after:
|
||||||
|
return self.env["purchase.order.line"]
|
||||||
|
# In SQL to reduce memory usage as we could process large dataset
|
||||||
|
self.env.cr.execute(
|
||||||
|
"""
|
||||||
|
SELECT order_id
|
||||||
|
FROM purchase_order_line
|
||||||
|
WHERE id in (
|
||||||
|
SELECT purchase_line_id
|
||||||
|
FROM account_move_line
|
||||||
|
WHERE id in %s
|
||||||
|
)
|
||||||
|
""",
|
||||||
|
(tuple(invoice_line_after.ids),),
|
||||||
|
)
|
||||||
|
purchase_ids = [x[0] for x in self.env.cr.fetchall()]
|
||||||
|
lines = self.env["purchase.order.line"].search(
|
||||||
|
[("order_id", "in", purchase_ids)], order="id"
|
||||||
|
)
|
||||||
|
return lines
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_delivered_service_quantity(self, cutoff):
|
||||||
|
# By default, no cutoff on purchase. Set received as invoiced.
|
||||||
|
self.ensure_one()
|
||||||
|
return self._get_cutoff_accrual_invoiced_quantity(cutoff)
|
||||||
|
|
||||||
|
def _get_cutoff_accrual_delivered_stock_quantity(self, cutoff):
|
||||||
|
# By default, no cutoff on purchase. Set received as invoiced.
|
||||||
|
self.ensure_one()
|
||||||
|
return self._get_cutoff_accrual_invoiced_quantity(cutoff)
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
To configure this module, you need to:
|
||||||
|
|
||||||
|
#. Go to the accounting settings to select the journals and accounts used for
|
||||||
|
the cutoff.
|
||||||
|
#. Analytic accounting needs to be enable in Accounting - Settings.
|
||||||
|
#. If you want to also accrue the taxes, you need in Accounting - Taxes, for
|
||||||
|
each type of taxes an accrued tax account.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
* Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
This module extends the functionality of account_cutoff_accrual_order_base
|
||||||
|
to allow the computation of expense cutoffs on purchase orders.
|
||||||
|
|
||||||
|
The accrual is computed by comparing on the order, the quantity
|
||||||
|
delivered/received and the quantity invoiced. In case, some deliveries or
|
||||||
|
invoices have occurred after the cutoff date, those quantities can be affected
|
||||||
|
and are recomputed. This allows to quickly generate a cutoff snapshot by
|
||||||
|
processing few lines.
|
||||||
|
|
||||||
|
For PO, you can make the difference between:
|
||||||
|
* invoice to receive (received qty > invoiced qty)
|
||||||
|
* goods to receive (prepayment) (received qty < invoiced qty)
|
||||||
|
|
||||||
|
If you expect a refund, you can make it in draft. In standard, this update
|
||||||
|
the PO and the quantity will not be accrued as goods to receive. You can accrue
|
||||||
|
the draft credit note as "credit notes to receive".
|
||||||
|
|
||||||
|
Orders forced in status invoiced won't have cutoff entries.
|
||||||
|
For instance, if you know you will never receive the missing invoiced goods,
|
||||||
|
you can force it as invoiced.
|
||||||
|
|
||||||
|
Once the cutoff lines have been generated but the accounting entries are not yet
|
||||||
|
created, you are still able to create or modify invoices before the accounting
|
||||||
|
butoff date. The cutoff lines will be adapted automatically to reflect the new
|
||||||
|
situation.
|
||||||
|
|
||||||
|
Once the cutoff accounting entries are generated you cannot create or modify
|
||||||
|
invoices before the accounting cutoff date.
|
||||||
|
Nevertheless, you can still reset to draft a supplier invoice but you won't be
|
||||||
|
able to modify any amount. You are then supposed to re-validate the invoice.
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
To use this module, you need to:
|
||||||
|
|
||||||
|
#. Go to Accounting - Cut-offs to configure and generate the cutoffs
|
||||||
|
|
||||||
|
Examples
|
||||||
|
========
|
||||||
|
|
||||||
|
* Purchase Order with quantity received: 0, quantity invoiced: 0
|
||||||
|
This will not make an cutoff entry
|
||||||
|
|
||||||
|
* Purchase Order with quantity received: 10, quantity invoiced: 0
|
||||||
|
This will make an cutoff entry with invoice to receive: 10
|
||||||
|
|
||||||
|
* Purchase Order with quantity received: 0, quantity invoiced: 10
|
||||||
|
This will make an cutoff entry with goods to receive: 10
|
||||||
|
|
||||||
|
* Purchase Order with quantity received: 10, quantity invoiced: 0
|
||||||
|
This will make an cutoff entry with invoice to receive: 10
|
||||||
|
Invoice is encoded after the cut-off date but dated before the cut-off date
|
||||||
|
The cutoff entry is updated in the existing cut-off
|
||||||
|
|
||||||
|
* Purchase Order with quantity received: 0, quantity invoiced: 0
|
||||||
|
This will not make an cutoff entry
|
||||||
|
Invoice is encoded after the cut-off date but dated before the cut-off date
|
||||||
|
An cutoff entry is added in the existing cut-off
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
|
|
@ -0,0 +1,486 @@
|
||||||
|
<?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 Cut-off Accrual Purchase</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-cut-off-accrual-purchase">
|
||||||
|
<h1 class="title">Account Cut-off Accrual Purchase</h1>
|
||||||
|
|
||||||
|
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
!! This file is generated by oca-gen-addon-readme !!
|
||||||
|
!! changes will be overwritten. !!
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
!! source digest: sha256:a0536b91a6e1c6035a5c0a21557f7bf3d7c392b59c460a6ab9ed1e40d9f6180c
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||||
|
<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-closing/tree/16.0/account_cutoff_accrual_purchase"><img alt="OCA/account-closing" src="https://img.shields.io/badge/github-OCA%2Faccount--closing-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-closing-16-0/account-closing-16-0-account_cutoff_accrual_purchase"><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-closing&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 extends the functionality of account_cutoff_accrual_order_base
|
||||||
|
to allow the computation of expense cutoffs on purchase orders.</p>
|
||||||
|
<p>The accrual is computed by comparing on the order, the quantity
|
||||||
|
delivered/received and the quantity invoiced. In case, some deliveries or
|
||||||
|
invoices have occurred after the cutoff date, those quantities can be affected
|
||||||
|
and are recomputed. This allows to quickly generate a cutoff snapshot by
|
||||||
|
processing few lines.</p>
|
||||||
|
<p>For PO, you can make the difference between:
|
||||||
|
* invoice to receive (received qty > invoiced qty)
|
||||||
|
* goods to receive (prepayment) (received qty < invoiced qty)</p>
|
||||||
|
<p>If you expect a refund, you can make it in draft. In standard, this update
|
||||||
|
the PO and the quantity will not be accrued as goods to receive. You can accrue
|
||||||
|
the draft credit note as “credit notes to receive”.</p>
|
||||||
|
<p>Orders forced in status invoiced won’t have cutoff entries.
|
||||||
|
For instance, if you know you will never receive the missing invoiced goods,
|
||||||
|
you can force it as invoiced.</p>
|
||||||
|
<p>Once the cutoff lines have been generated but the accounting entries are not yet
|
||||||
|
created, you are still able to create or modify invoices before the accounting
|
||||||
|
butoff date. The cutoff lines will be adapted automatically to reflect the new
|
||||||
|
situation.</p>
|
||||||
|
<p>Once the cutoff accounting entries are generated you cannot create or modify
|
||||||
|
invoices before the accounting cutoff date.
|
||||||
|
Nevertheless, you can still reset to draft a supplier invoice but you won’t be
|
||||||
|
able to modify any amount. You are then supposed to re-validate the invoice.</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="#examples" id="toc-entry-3">Examples</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>
|
||||||
|
<p>To configure this module, you need to:</p>
|
||||||
|
<ol class="arabic simple">
|
||||||
|
<li>Go to the accounting settings to select the journals and accounts used for
|
||||||
|
the cutoff.</li>
|
||||||
|
<li>Analytic accounting needs to be enable in Accounting - Settings.</li>
|
||||||
|
<li>If you want to also accrue the taxes, you need in Accounting - Taxes, for
|
||||||
|
each type of taxes an accrued tax account.</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="usage">
|
||||||
|
<h1><a class="toc-backref" href="#toc-entry-2">Usage</a></h1>
|
||||||
|
<p>To use this module, you need to:</p>
|
||||||
|
<ol class="arabic simple">
|
||||||
|
<li>Go to Accounting - Cut-offs to configure and generate the cutoffs</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="examples">
|
||||||
|
<h1><a class="toc-backref" href="#toc-entry-3">Examples</a></h1>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Purchase Order with quantity received: 0, quantity invoiced: 0
|
||||||
|
This will not make an cutoff entry</li>
|
||||||
|
<li>Purchase Order with quantity received: 10, quantity invoiced: 0
|
||||||
|
This will make an cutoff entry with invoice to receive: 10</li>
|
||||||
|
<li>Purchase Order with quantity received: 0, quantity invoiced: 10
|
||||||
|
This will make an cutoff entry with goods to receive: 10</li>
|
||||||
|
<li>Purchase Order with quantity received: 10, quantity invoiced: 0
|
||||||
|
This will make an cutoff entry with invoice to receive: 10
|
||||||
|
Invoice is encoded after the cut-off date but dated before the cut-off date
|
||||||
|
The cutoff entry is updated in the existing cut-off</li>
|
||||||
|
<li>Purchase Order with quantity received: 0, quantity invoiced: 0
|
||||||
|
This will not make an cutoff entry
|
||||||
|
Invoice is encoded after the cut-off date but dated before the cut-off date
|
||||||
|
An cutoff entry is added in the existing cut-off</li>
|
||||||
|
</ul>
|
||||||
|
</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-closing/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-closing/issues/new?body=module:%20account_cutoff_accrual_purchase%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>BCIM</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="contributors">
|
||||||
|
<h2><a class="toc-backref" href="#toc-entry-7">Contributors</a></h2>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Jacques-Etienne Baudoux (BCIM) <<a class="reference external" href="mailto:je@bcim.be">je@bcim.be</a>></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>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
|
||||||
|
<p><a class="reference external image-reference" href="https://github.com/jbaudoux"><img alt="jbaudoux" src="https://github.com/jbaudoux.png?size=40px" /></a></p>
|
||||||
|
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-closing/tree/16.0/account_cutoff_accrual_purchase">OCA/account-closing</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,31 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!--
|
||||||
|
Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
-->
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="account_accrual_action" model="ir.actions.act_window">
|
||||||
|
<field name="name">Accrued Expense on Purchase Orders</field>
|
||||||
|
<field name="res_model">account.cutoff</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
<field name="domain">[('order_line_model', '=', 'purchase.order.line')]</field>
|
||||||
|
<field
|
||||||
|
name="context"
|
||||||
|
>{'default_order_line_model': 'purchase.order.line', 'default_cutoff_type': 'accrued_expense'}</field>
|
||||||
|
<field name="help" type="html">
|
||||||
|
<p class="oe_view_nocontent_create">
|
||||||
|
Click to start preparing a new expense accrual.
|
||||||
|
</p><p>
|
||||||
|
This view can be used by accountants in order to collect information about accrued expenses. It then allows to generate the corresponding cut-off journal entry in one click.
|
||||||
|
</p>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
id="account_accrual_menu"
|
||||||
|
parent="account_cutoff_base.cutoff_menu"
|
||||||
|
action="account_accrual_action"
|
||||||
|
sequence="5"
|
||||||
|
/>
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!--
|
||||||
|
Copyright 2018 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
||||||
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
-->
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="account_cutoff_line_form" model="ir.ui.view">
|
||||||
|
<field name="model">account.cutoff.line</field>
|
||||||
|
<field name="inherit_id" ref="account_cutoff_base.account_cutoff_line_form" />
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="parent_id" position="after">
|
||||||
|
<field name="purchase_line_id" invisible="1" />
|
||||||
|
<field
|
||||||
|
name="purchase_order_id"
|
||||||
|
attrs="{'invisible': [('purchase_line_id', '=', False)]}"
|
||||||
|
/>
|
||||||
|
</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_cutoff_accrual_purchase Module - account_cutoff_accrual_purchase
|
||||||
|
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_cutoff_accrual_purchase. 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,7 @@
|
||||||
|
# Dependencies
|
||||||
|
|
||||||
|
This addon depends on:
|
||||||
|
|
||||||
|
- [account_cutoff_accrual_order_base](../../odoo-bringout-oca-account-closing-account_cutoff_accrual_order_base)
|
||||||
|
- [purchase](../../odoo-bringout-oca-ocb-purchase)
|
||||||
|
- [purchase_force_invoiced](../../odoo-bringout-oca-purchase-workflow-purchase_force_invoiced)
|
||||||
|
|
@ -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_cutoff_accrual_purchase or install in UI.
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Install
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install odoo-bringout-oca-account-closing-account_cutoff_accrual_purchase"
|
||||||
|
# or
|
||||||
|
uv pip install odoo-bringout-oca-account-closing-account_cutoff_accrual_purchase"
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
# Models
|
||||||
|
|
||||||
|
Detected core models and extensions in account_cutoff_accrual_purchase.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
classDiagram
|
||||||
|
class purchase_order_line
|
||||||
|
class account_cutoff
|
||||||
|
class account_cutoff_line
|
||||||
|
class account_move
|
||||||
|
class purchase_order
|
||||||
|
```
|
||||||
|
|
||||||
|
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_cutoff_accrual_purchase. Provides features documented in upstream Odoo 16 under this addon.
|
||||||
|
|
||||||
|
- Source: OCA/OCB 16.0, addon account_cutoff_accrual_purchase
|
||||||
|
- 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
|
||||||
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