├── .copier-answers.yml ├── .editorconfig ├── .github └── workflows │ ├── pre-commit.yml │ ├── stale.yml │ └── test.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .pylintrc ├── .pylintrc-mandatory ├── .ruff.toml ├── LICENSE ├── README.md ├── checklog-odoo.cfg ├── eslint.config.cjs ├── prettier.config.cjs ├── procurement_purchase_no_grouping ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── de.po │ ├── es.po │ ├── es_ES.po │ ├── es_MX.po │ ├── es_PE.po │ ├── fi.po │ ├── fr.po │ ├── fr_BE.po │ ├── fr_FR.po │ ├── gl.po │ ├── hr.po │ ├── it.po │ ├── nl.po │ ├── nl_NL.po │ ├── procurement_purchase_no_grouping.pot │ ├── pt_BR.po │ ├── pt_PT.po │ ├── ro.po │ ├── sl.po │ ├── tr_TR.po │ ├── vi_VN.po │ └── zh_CN.po ├── models │ ├── __init__.py │ ├── product_category.py │ ├── purchase_order.py │ ├── res_company.py │ ├── res_config_settings.py │ └── stock_rule.py ├── pyproject.toml ├── readme │ ├── CONFIGURE.md │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── ROADMAP.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_procurement_purchase_no_grouping.py └── views │ ├── product_category_view.xml │ └── res_config_settings_views.xml ├── purchase_advance_payment ├── README.rst ├── __init__.py ├── __manifest__.py ├── data │ └── ir_config_parameter.xml ├── i18n │ ├── es.po │ ├── fr.po │ ├── it.po │ ├── pt_BR.po │ └── purchase_advance_payment.pot ├── models │ ├── __init__.py │ ├── account_move.py │ ├── payment.py │ ├── purchase_order.py │ └── res_config_settings.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── CREDITS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── security │ └── ir.model.access.csv ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_advance_payment.py ├── views │ ├── account_payment_views.xml │ ├── purchase_view.xml │ └── res_config_settings_views.xml └── wizard │ ├── __init__.py │ ├── purchase_advance_payment_wizard.py │ └── purchase_advance_payment_wizard_view.xml ├── purchase_all_shipments ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── it.po │ └── purchase_all_shipments.pot ├── models │ ├── __init__.py │ └── purchase_order.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ └── DESCRIPTION.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_three_step_reception.py └── views │ └── purchase_order_views.xml ├── purchase_analytic_global ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── fr.po │ ├── it.po │ └── purchase_analytic_global.pot ├── models │ ├── __init__.py │ └── purchase_order.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── CREDITS.md │ └── DESCRIPTION.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_analytic_global.py └── views │ └── purchase_order.xml ├── purchase_blanket_order ├── README.rst ├── __init__.py ├── __manifest__.py ├── data │ ├── ir_cron.xml │ └── sequence.xml ├── i18n │ ├── es.po │ ├── it.po │ └── purchase_blanket_order.pot ├── models │ ├── __init__.py │ ├── blanket_orders.py │ ├── purchase_config_settings.py │ └── purchase_order.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── report │ ├── report.xml │ └── templates.xml ├── security │ ├── ir.model.access.csv │ └── security.xml ├── static │ └── description │ │ ├── BO_actions.png │ │ ├── BO_form.png │ │ ├── BO_lines.png │ │ ├── BO_menu.png │ │ ├── PO_BOLine.png │ │ ├── PO_from_BO.png │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ ├── test_purchase_blanket_order.py │ └── test_purchase_order.py ├── views │ ├── purchase_blanket_order_views.xml │ ├── purchase_config_settings.xml │ └── purchase_order_views.xml └── wizard │ ├── __init__.py │ ├── create_purchase_orders.py │ └── create_purchase_orders.xml ├── purchase_cancel_reason ├── README.rst ├── __init__.py ├── __manifest__.py ├── data │ └── purchase_order_cancel_reason.xml ├── i18n │ ├── am.po │ ├── ar.po │ ├── bg.po │ ├── bs.po │ ├── ca.po │ ├── cs.po │ ├── da.po │ ├── de.po │ ├── el_GR.po │ ├── en_GB.po │ ├── es.po │ ├── es_AR.po │ ├── es_CO.po │ ├── es_CR.po │ ├── es_DO.po │ ├── es_EC.po │ ├── es_ES.po │ ├── es_MX.po │ ├── es_PE.po │ ├── es_PY.po │ ├── es_VE.po │ ├── et.po │ ├── eu.po │ ├── fa.po │ ├── fi.po │ ├── fr.po │ ├── fr_BE.po │ ├── fr_CA.po │ ├── fr_CH.po │ ├── gl.po │ ├── gl_ES.po │ ├── he.po │ ├── hr.po │ ├── hr_HR.po │ ├── hu.po │ ├── id.po │ ├── it.po │ ├── ja.po │ ├── ko.po │ ├── lt.po │ ├── lt_LT.po │ ├── lv.po │ ├── mk.po │ ├── mn.po │ ├── nb.po │ ├── nb_NO.po │ ├── nl.po │ ├── nl_BE.po │ ├── nl_NL.po │ ├── pl.po │ ├── pt.po │ ├── pt_BR.po │ ├── pt_PT.po │ ├── purchase_cancel_reason.pot │ ├── ro.po │ ├── ru.po │ ├── sk.po │ ├── sl.po │ ├── sr.po │ ├── sr@latin.po │ ├── sv.po │ ├── th.po │ ├── tr.po │ ├── uk.po │ ├── vi.po │ ├── vi_VN.po │ ├── zh_CN.po │ └── zh_TW.po ├── models │ ├── __init__.py │ ├── purchase_order.py │ └── purchase_order_cancel_reason.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── security │ └── ir.model.access.csv ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_cancel_reason.py ├── views │ ├── purchase_order.xml │ └── purchase_order_cancel_reason.xml └── wizard │ ├── __init__.py │ ├── purchase_order_cancel.py │ └── purchase_order_cancel.xml ├── purchase_commercial_partner ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── de.po │ ├── es.po │ ├── es_ES.po │ ├── es_PE.po │ ├── fr.po │ ├── fr_BE.po │ ├── gl.po │ ├── hr.po │ ├── it.po │ ├── nl.po │ ├── nl_NL.po │ ├── pt_BR.po │ ├── purchase_commercial_partner.pot │ ├── ro.po │ ├── sl.po │ ├── sv.po │ └── vi_VN.po ├── models │ ├── __init__.py │ └── purchase_order.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_commercial_partner.py └── views │ ├── purchase_order.xml │ └── purchase_report.xml ├── purchase_default_terms_conditions ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── it.po │ ├── pt_BR.po │ └── purchase_default_terms_conditions.pot ├── models │ ├── __init__.py │ ├── purchase.py │ ├── res_company.py │ ├── res_config_settings.py │ └── res_partner.py ├── pyproject.toml ├── readme │ ├── CONFIGURE.md │ ├── CONTRIBUTORS.md │ ├── CREDITS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ ├── description │ │ ├── banner.png │ │ ├── icon.png │ │ └── index.html │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_order.py └── views │ ├── res_config_settings.xml │ └── res_partner_views.xml ├── purchase_delivery_split_date ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── ca.po │ ├── de.po │ ├── es.po │ ├── es_MX.po │ ├── es_PE.po │ ├── fi.po │ ├── fr.po │ ├── gl.po │ ├── hr.po │ ├── it.po │ ├── nl_NL.po │ ├── pt_BR.po │ ├── pt_PT.po │ ├── purchase_delivery_split_date.pot │ ├── ro.po │ ├── sl.po │ └── zh_CN.po ├── models │ ├── __init__.py │ ├── purchase_order_line.py │ ├── stock_move.py │ └── stock_picking.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ ├── HISTORY.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ ├── index.html │ │ └── split_delivery.png └── tests │ ├── __init__.py │ └── test_purchase_delivery.py ├── purchase_deposit ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── arp.po │ ├── es.po │ ├── fr.po │ ├── it.po │ └── purchase_deposit.pot ├── models │ ├── __init__.py │ ├── account_move.py │ ├── purchase.py │ ├── res_company.py │ └── res_config_settings.py ├── pyproject.toml ├── readme │ ├── CONFIGURATION.rst │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── security │ └── ir.model.access.csv ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_deposit.py ├── views │ ├── purchase_view.xml │ └── res_config_settings_views.xml └── wizard │ ├── __init__.py │ ├── purchase_make_invoice_advance.py │ └── purchase_make_invoice_advance_views.xml ├── purchase_exception ├── README.rst ├── __init__.py ├── __manifest__.py ├── data │ └── purchase_exception_data.xml ├── i18n │ ├── es.po │ ├── fr.po │ ├── it.po │ ├── purchase_exception.pot │ └── zh_CN.po ├── models │ ├── __init__.py │ ├── exception_rule.py │ ├── purchase.py │ └── purchase_line.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── CREDITS.md │ └── DESCRIPTION.md ├── security │ └── ir.model.access.csv ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_exception.py ├── views │ └── purchase_view.xml └── wizard │ ├── __init__.py │ ├── purchase_exception_confirm.py │ └── purchase_exception_confirm_view.xml ├── purchase_fop_shipping ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── de.po │ ├── es.po │ ├── es_PE.po │ ├── fr.po │ ├── fr_BE.po │ ├── gl.po │ ├── hr.po │ ├── it.po │ ├── nl.po │ ├── nl_NL.po │ ├── pt_BR.po │ ├── purchase_fop_shipping.pot │ ├── ro.po │ ├── sl.po │ └── vi_VN.po ├── models │ ├── __init__.py │ ├── partner.py │ └── purchase.py ├── pyproject.toml ├── security │ └── res_groups.xml ├── static │ └── description │ │ └── icon.png ├── tests │ ├── __init__.py │ └── test_fop_shipping.py └── views │ ├── purchase_order.xml │ └── res_partner.xml ├── purchase_force_invoiced ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── fr.po │ ├── it.po │ ├── purchase_force_invoiced.pot │ └── zh_CN.po ├── migrations │ └── 16.0.1.0.0 │ │ └── post-migrate.py ├── model │ ├── __init__.py │ ├── purchase_order.py │ └── purchase_order_line.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── reports │ ├── __init__.py │ └── purchase_report.py ├── security │ └── res_groups_data.xml ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_force_invoiced.py └── view │ └── purchase_order.xml ├── purchase_force_invoiced_quantity ├── README.rst ├── __init__.py ├── __manifest__.py ├── demo │ ├── demo_product.xml │ └── demo_purchase_order.xml ├── i18n │ ├── it.po │ └── purchase_force_invoiced_quantity.pot ├── models │ ├── __init__.py │ └── purchase_order_line.py ├── pyproject.toml ├── readme │ ├── CONFIGURE.md │ ├── CONTEXT.md │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_force_invoiced_quantity.py └── views │ └── purchase_order.xml ├── purchase_invoice_method ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── es_MX.po │ ├── it.po │ └── purchase_invoice_method.pot ├── models │ ├── __init__.py │ └── purchase_order.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_invoice_method.py └── views │ └── purchase_order.xml ├── purchase_invoice_plan ├── README.rst ├── __init__.py ├── __manifest__.py ├── data │ └── purchase_data.xml ├── i18n │ ├── es.po │ ├── it.po │ └── purchase_invoice_plan.pot ├── models │ ├── __init__.py │ ├── purchase_invoice_plan.py │ └── purchase_order.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── security │ └── ir.model.access.csv ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_invoice_plan.py ├── views │ └── purchase_view.xml └── wizard │ ├── __init__.py │ ├── purchase_create_invoice_plan.py │ ├── purchase_create_invoice_plan_view.xml │ ├── purchase_make_planned_invoice.py │ └── purchase_make_planned_invoice_view.xml ├── purchase_last_price_info ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── ca.po │ ├── de.po │ ├── el_GR.po │ ├── es.po │ ├── es_ES.po │ ├── eu.po │ ├── fi.po │ ├── fr.po │ ├── fr_CH.po │ ├── fr_FR.po │ ├── gl.po │ ├── hr.po │ ├── hr_HR.po │ ├── it.po │ ├── nl.po │ ├── nl_NL.po │ ├── pt.po │ ├── pt_BR.po │ ├── purchase_last_price_info.pot │ ├── ro.po │ ├── ru.po │ ├── sk.po │ ├── sl.po │ ├── tr.po │ ├── tr_TR.po │ ├── vi_VN.po │ └── zh_CN.po ├── models │ ├── __init__.py │ ├── product_product.py │ └── product_template.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ ├── index.html │ │ └── purchase_last_price.png ├── tests │ ├── __init__.py │ └── test_purchase_last_price_info.py └── views │ └── product_views.xml ├── purchase_manual_currency ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── it.po │ └── purchase_manual_currency.pot ├── models │ ├── __init__.py │ ├── purchase.py │ ├── purchase_order_line.py │ ├── res_company.py │ └── res_config_settings.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_manual_currency.py └── views │ ├── purchase_views.xml │ └── res_config_settings_views.xml ├── purchase_manual_delivery ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── it.po │ ├── purchase_manual_delivery.pot │ └── sl.po ├── migrations │ └── 17.0.1.0.0 │ │ └── pre-migration.py ├── models │ ├── __init__.py │ ├── product_product.py │ ├── purchase_order.py │ ├── purchase_order_line.py │ ├── res_company.py │ └── res_config.py ├── pyproject.toml ├── readme │ ├── CONFIGURE.md │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── report │ ├── __init__.py │ └── stock_forecasted.py ├── security │ └── ir.model.access.csv ├── static │ ├── description │ │ ├── create_incoming_shipment_button.png │ │ ├── create_incoming_shipment_wizard.png │ │ ├── icon.png │ │ └── index.html │ └── src │ │ └── purchase_manual_delivery_forecasted │ │ └── forecasted_details.xml ├── tests │ ├── __init__.py │ ├── test_purchase_manual_delivery.py │ └── test_report_forecast.py ├── views │ ├── purchase_order_line_views.xml │ ├── purchase_order_views.xml │ └── res_config_view.xml └── wizard │ ├── __init__.py │ ├── create_manual_stock_picking.py │ └── create_manual_stock_picking.xml ├── purchase_open_qty ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── de.po │ ├── es.po │ ├── es_MX.po │ ├── es_PE.po │ ├── fi.po │ ├── fr.po │ ├── fr_BE.po │ ├── gl.po │ ├── hr.po │ ├── it.po │ ├── nl.po │ ├── nl_NL.po │ ├── pt_BR.po │ ├── pt_PT.po │ ├── purchase_open_qty.pot │ ├── ro.po │ ├── sl.po │ ├── vi_VN.po │ └── zh_CN.po ├── init_hook.py ├── models │ ├── __init__.py │ ├── purchase_order.py │ └── purchase_order_line.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── CREDITS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_open_qty.py └── views │ ├── purchase_order_line_views.xml │ └── purchase_order_views.xml ├── purchase_order_archive ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── it.po │ ├── purchase_order_archive.pot │ └── zh_CN.po ├── models │ ├── __init__.py │ └── purchase_order.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── setup │ └── purchase_order_archive │ │ ├── odoo │ │ └── addons │ │ │ └── purchase_order_archive │ │ └── setup.py ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_order_archive.py └── views │ └── purchase_order.xml ├── purchase_order_general_discount ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── it.po │ ├── pt.po │ └── purchase_order_general_discount.pot ├── models │ ├── __init__.py │ ├── purchase_order.py │ ├── res_company.py │ ├── res_config_settings.py │ └── res_partner.py ├── pyproject.toml ├── readme │ ├── CONFIGURE.md │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_order_general_discount.py └── views │ ├── purchase_order_view.xml │ ├── res_config_view.xml │ └── res_partner_view.xml ├── purchase_order_line_menu ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── fr_FR.po │ ├── hr.po │ ├── it.po │ ├── ja.po │ ├── pt_BR.po │ └── purchase_order_line_menu.pot ├── models │ ├── __init__.py │ └── purchase_order_line.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html └── views │ └── purchase_order_line_views.xml ├── purchase_order_line_sequence ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── de.po │ ├── es.po │ ├── fr.po │ └── purchase_order_line_sequence.pot ├── models │ ├── __init__.py │ ├── account_move_line.py │ ├── purchase.py │ ├── purchase_line.py │ └── stock_move.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ ├── ROADMAP.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_po_lines_sequence.py └── views │ ├── account_move_view.xml │ ├── purchase_view.xml │ ├── report_invoice.xml │ ├── report_purchaseorder.xml │ └── report_purchasequotation.xml ├── purchase_order_line_stock_available ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── it.po │ ├── pt_BR.po │ ├── purchase_order_line_stock_available.pot │ ├── sl.po │ └── zh_CN.po ├── models │ ├── __init__.py │ └── purchase.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase.py └── views │ └── purchase_view.xml ├── purchase_order_qty_change_no_recompute ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── it.po │ └── purchase_order_qty_change_no_recompute.pot ├── monkeypatching.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html └── tests │ ├── __init__.py │ └── test_purchase_order_qty_change.py ├── purchase_order_secondary_unit ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── de.po │ ├── es.po │ ├── fr.po │ ├── it.po │ ├── ja.po │ └── purchase_order_secondary_unit.pot ├── models │ ├── __init__.py │ ├── product_product.py │ ├── product_template.py │ └── purchase_order.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── reports │ ├── purchase_order_templates.xml │ └── purchase_quotation_templates.xml ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_order_secondary_unit.py └── views │ ├── product_views.xml │ └── purchase_order_views.xml ├── purchase_order_supplierinfo_update ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── it.po │ ├── pt_BR.po │ └── purchase_order_supplierinfo_update.pot ├── models │ ├── __init__.py │ └── purchase_order.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ ├── ROADMAP.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html └── tests │ ├── __init__.py │ └── test_purchase_order_supplierinfo_update.py ├── purchase_order_type ├── README.rst ├── __init__.py ├── __manifest__.py ├── data │ └── purchase_order_type.xml ├── i18n │ ├── am.po │ ├── ar.po │ ├── bg.po │ ├── bs.po │ ├── ca.po │ ├── ca_ES.po │ ├── cs.po │ ├── da.po │ ├── de.po │ ├── el_GR.po │ ├── en_GB.po │ ├── es.po │ ├── es_AR.po │ ├── es_CL.po │ ├── es_CO.po │ ├── es_CR.po │ ├── es_DO.po │ ├── es_EC.po │ ├── es_ES.po │ ├── es_MX.po │ ├── es_PE.po │ ├── es_PY.po │ ├── es_VE.po │ ├── et.po │ ├── eu.po │ ├── fa.po │ ├── fi.po │ ├── fr.po │ ├── fr_CA.po │ ├── fr_CH.po │ ├── fr_FR.po │ ├── gl.po │ ├── gl_ES.po │ ├── he.po │ ├── hr.po │ ├── hr_HR.po │ ├── hu.po │ ├── id.po │ ├── it.po │ ├── ja.po │ ├── ko.po │ ├── lt.po │ ├── lt_LT.po │ ├── lv.po │ ├── mk.po │ ├── mn.po │ ├── nb.po │ ├── nb_NO.po │ ├── nl.po │ ├── nl_BE.po │ ├── nl_NL.po │ ├── pl.po │ ├── pt.po │ ├── pt_BR.po │ ├── pt_PT.po │ ├── purchase_order_type.pot │ ├── ro.po │ ├── ru.po │ ├── sk.po │ ├── sl.po │ ├── sr.po │ ├── sr@latin.po │ ├── sv.po │ ├── th.po │ ├── tr.po │ ├── tr_TR.po │ ├── uk.po │ ├── vi.po │ ├── vi_VN.po │ ├── zh_CN.po │ └── zh_TW.po ├── models │ ├── __init__.py │ ├── purchase_order.py │ ├── purchase_order_type.py │ └── res_partner.py ├── pyproject.toml ├── readme │ ├── CONFIGURE.md │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ ├── ROADMAP.md │ └── USAGE.md ├── security │ ├── ir.model.access.csv │ └── security.xml ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_order_type.py └── views │ ├── res_partner_view.xml │ ├── view_purchase_order.xml │ └── view_purchase_order_type.xml ├── purchase_order_type_dashboard ├── README.rst ├── __init__.py ├── __manifest__.py ├── demo │ └── purchase_order_type_dashboard.xml ├── i18n │ ├── es.po │ ├── it.po │ └── purchase_order_type_dashboard.pot ├── models │ ├── __init__.py │ └── purchase_order_type.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ └── DESCRIPTION.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_order_type_dashboard.py └── views │ ├── menu_purchase_order.xml │ ├── view_purchase_order.xml │ └── view_purchase_order_type.xml ├── purchase_order_uninvoiced_amount ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── en_US.po │ ├── es.po │ ├── it.po │ └── purchase_order_uninvoiced_amount.pot ├── models │ ├── __init__.py │ └── purchase_order.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ └── DESCRIPTION.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_order_uninvoiced_amount.py └── views │ └── purchase_order_view.xml ├── purchase_partner_incoterm ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── it.po │ └── purchase_partner_incoterm.pot ├── models │ ├── __init__.py │ ├── purchase_order.py │ └── res_partner.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── CREDITS.md │ └── DESCRIPTION.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_partner_incoterm.py └── views │ ├── partner_view.xml │ └── purchase_view.xml ├── purchase_partner_selectable_option ├── README.rst ├── __init__.py ├── __manifest__.py ├── data │ └── ir_config_parameter.xml ├── i18n │ ├── es.po │ ├── it.po │ ├── pt_BR.po │ └── purchase_partner_selectable_option.pot ├── models │ ├── __init__.py │ ├── purchase_order.py │ └── res_partner.py ├── pyproject.toml ├── readme │ ├── CONFIGURE.md │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_partner_selectable_option.py └── views │ └── res_partner_view.xml ├── purchase_receipt_expectation ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── fr.po │ ├── it.po │ └── purchase_receipt_expectation.pot ├── models │ ├── __init__.py │ └── purchase_order.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_receipt_expectation.py └── views │ └── purchase_order.xml ├── purchase_reception_notify ├── README.rst ├── __init__.py ├── __manifest__.py ├── data │ └── mail_data.xml ├── hooks.py ├── i18n │ ├── es.po │ ├── it.po │ ├── purchase_reception_notify.pot │ └── zh_CN.po ├── models │ ├── __init__.py │ └── stock_picking.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html └── tests │ ├── __init__.py │ └── test_purchase_reception_notify.py ├── purchase_request ├── README.rst ├── __init__.py ├── __manifest__.py ├── data │ ├── purchase_request_data.xml │ └── purchase_request_sequence.xml ├── demo │ └── purchase_request_demo.xml ├── i18n │ ├── am.po │ ├── ar.po │ ├── bg.po │ ├── bs.po │ ├── ca.po │ ├── ca_ES.po │ ├── cs.po │ ├── da.po │ ├── de.po │ ├── el_GR.po │ ├── en_GB.po │ ├── es.po │ ├── es_AR.po │ ├── es_CO.po │ ├── es_CR.po │ ├── es_DO.po │ ├── es_EC.po │ ├── es_ES.po │ ├── es_MX.po │ ├── es_PE.po │ ├── es_PY.po │ ├── es_VE.po │ ├── et.po │ ├── eu.po │ ├── fa.po │ ├── fi.po │ ├── fr.po │ ├── fr_BE.po │ ├── fr_CA.po │ ├── fr_CH.po │ ├── fr_FR.po │ ├── gl.po │ ├── gl_ES.po │ ├── he.po │ ├── hr.po │ ├── hr_HR.po │ ├── hu.po │ ├── id.po │ ├── it.po │ ├── ja.po │ ├── ko.po │ ├── lt.po │ ├── lt_LT.po │ ├── lv.po │ ├── mk.po │ ├── mn.po │ ├── nb.po │ ├── nb_NO.po │ ├── nl.po │ ├── nl_BE.po │ ├── nl_NL.po │ ├── pl.po │ ├── pt.po │ ├── pt_BR.po │ ├── pt_PT.po │ ├── purchase_request.pot │ ├── ro.po │ ├── ru.po │ ├── sk.po │ ├── sk_SK.po │ ├── sl.po │ ├── sr.po │ ├── sr@latin.po │ ├── sv.po │ ├── th.po │ ├── tr.po │ ├── tr_TR.po │ ├── uk.po │ ├── vi.po │ ├── vi_VN.po │ ├── zh_CN.po │ └── zh_TW.po ├── models │ ├── __init__.py │ ├── orderpoint.py │ ├── product_template.py │ ├── purchase_order.py │ ├── purchase_request.py │ ├── purchase_request_allocation.py │ ├── purchase_request_line.py │ ├── stock_move.py │ ├── stock_move_line.py │ └── stock_rule.py ├── pyproject.toml ├── readme │ ├── CONFIGURE.md │ ├── CONTRIBUTORS.md │ ├── CREDITS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── reports │ └── report_purchase_request.xml ├── security │ ├── ir.model.access.csv │ └── purchase_request.xml ├── static │ └── description │ │ ├── icon.png │ │ ├── icon.svg │ │ └── index.html ├── tests │ ├── __init__.py │ ├── test_purchase_request.py │ ├── test_purchase_request_allocation.py │ ├── test_purchase_request_procurement.py │ └── test_purchase_request_to_rfq.py ├── views │ ├── product_template.xml │ ├── purchase_order_view.xml │ ├── purchase_request_line_view.xml │ ├── purchase_request_report.xml │ ├── purchase_request_view.xml │ └── stock_move_views.xml └── wizard │ ├── __init__.py │ ├── purchase_request_line_make_purchase_order.py │ └── purchase_request_line_make_purchase_order_view.xml ├── purchase_request_department ├── README.rst ├── __init__.py ├── __manifest__.py ├── hooks.py ├── i18n │ ├── de.po │ ├── es.po │ ├── es_EC.po │ ├── fr.po │ ├── hr.po │ ├── it.po │ ├── nb.po │ ├── nb_NO.po │ ├── nl_NL.po │ ├── pt_BR.po │ ├── purchase_request_department.pot │ ├── sl.po │ ├── tr.po │ └── zh_CN.po ├── models │ ├── __init__.py │ └── purchase_request.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── CREDITS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_request_department.py └── views │ └── purchase_request_department_view.xml ├── purchase_request_exception ├── README.rst ├── __init__.py ├── __manifest__.py ├── data │ └── purchase_request_exception_data.xml ├── i18n │ ├── es.po │ ├── fr.po │ ├── it.po │ └── purchase_request_exception.pot ├── models │ ├── __init__.py │ ├── exception_rule.py │ ├── purchase_request.py │ └── purchase_request_line.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ └── DESCRIPTION.md ├── security │ └── ir.model.access.csv ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_request_exception.py ├── views │ └── purchase_request_view.xml └── wizard │ ├── __init__.py │ ├── purchase_request_exception_confirm.py │ └── purchase_request_exception_confirm_view.xml ├── purchase_request_tier_validation ├── README.rst ├── __init__.py ├── __manifest__.py ├── demo │ └── tier_definition.xml ├── i18n │ ├── es.po │ ├── es_EC.po │ ├── it.po │ ├── nl_NL.po │ ├── purchase_request_tier_validation.pot │ ├── tr.po │ └── zh_CN.po ├── models │ ├── __init__.py │ ├── purchase_request.py │ └── tier_definition.py ├── pyproject.toml ├── readme │ ├── CONFIGURE.md │ ├── CONTRIBUTORS.md │ ├── CREDITS.md │ ├── DESCRIPTION.md │ ├── INSTALL.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_request_tier_validation.py └── views │ └── purchase_request_view.xml ├── purchase_request_type ├── README.rst ├── __init__.py ├── __manifest__.py ├── demo │ └── purchase_request_type.xml ├── i18n │ ├── es.po │ ├── it.po │ └── purchase_request_type.pot ├── models │ ├── __init__.py │ ├── purchase_request.py │ └── purchase_request_type.py ├── pyproject.toml ├── readme │ ├── CONFIGURE.md │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ ├── ROADMAP.md │ └── USAGE.md ├── security │ ├── ir.model.access.csv │ └── security.xml ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_request_type.py └── views │ ├── purchase_request_type_view.xml │ └── purchase_request_view.xml ├── purchase_requisition_line_description ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── it.po │ └── purchase_requisition_line_description.pot ├── models │ ├── __init__.py │ └── purchase_requisition_line.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── report │ └── purchase_requisition_report.xml ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_requisition_line_description.py └── views │ └── purchase_requisition.xml ├── purchase_sale_link_by_origin ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── it.po │ └── purchase_sale_link_by_origin.pot ├── models │ ├── __init__.py │ ├── purchase_order.py │ └── sale_order.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── CREDITS.md │ └── DESCRIPTION.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html └── tests │ ├── __init__.py │ └── test_sale_purchase.py ├── purchase_security ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── it.po │ └── purchase_security.pot ├── models │ ├── __init__.py │ ├── ir_rule.py │ ├── purchase_order.py │ ├── purchase_team.py │ ├── res_partner.py │ └── res_users.py ├── pyproject.toml ├── readme │ ├── CONFIGURATION.rst │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── security │ ├── ir.model.access.csv │ └── security.xml ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_access_rights.py └── views │ ├── purchase_order_views.xml │ ├── purchase_team_views.xml │ └── res_partner_views.xml ├── purchase_stock_packaging ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── hr.po │ ├── it.po │ └── purchase_stock_packaging.pot ├── models │ ├── __init__.py │ └── purchase_order_line.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html └── tests │ ├── __init__.py │ └── test_purchase_packaging.py ├── purchase_tag ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── it.po │ ├── pt_BR.po │ └── purchase_tag.pot ├── models │ ├── __init__.py │ ├── purchase_order.py │ └── purchase_tag.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── security │ └── ir.model.access.csv ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_tag.py └── views │ ├── purchase_tag_view.xml │ └── purchase_view.xml ├── purchase_tier_validation ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── it.po │ ├── purchase_tier_validation.pot │ ├── tr.po │ └── zh_CN.po ├── models │ ├── __init__.py │ ├── purchase_order.py │ └── tier_definition.py ├── pyproject.toml ├── readme │ ├── CONFIGURE.md │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ ├── INSTALL.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_tier_validation.py └── views │ └── purchase_order_view.xml ├── purchase_warn_message ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── it.po │ └── purchase_warn_message.pot ├── models │ ├── __init__.py │ └── purchase_order.py ├── pyproject.toml ├── readme │ ├── CONTRIBUTORS.md │ └── DESCRIPTION.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_purchase_warn_message.py └── views │ └── purchase_order_views.xml ├── sale_purchase_force_vendor ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── it.po │ ├── nl.po │ └── sale_purchase_force_vendor.pot ├── models │ ├── __init__.py │ ├── res_company.py │ ├── res_config_settings.py │ ├── sale_order_line.py │ └── stock_move.py ├── pyproject.toml ├── readme │ ├── CONFIGURE.md │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ ├── common.py │ └── test_sale_purchase_force_vendor.py └── views │ ├── res_config_settings_view.xml │ └── sale_order_view.xml ├── setup └── _metapackage │ └── pyproject.toml ├── supplier_calendar ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n │ ├── es.po │ ├── it.po │ └── supplier_calendar.pot ├── models │ ├── __init__.py │ ├── product.py │ ├── purchase.py │ ├── res_partner.py │ └── stock_rule.py ├── pyproject.toml ├── readme │ ├── CONFIGURE.md │ ├── CONTRIBUTORS.md │ ├── DESCRIPTION.md │ └── USAGE.md ├── static │ └── description │ │ ├── icon.png │ │ └── index.html ├── tests │ ├── __init__.py │ └── test_supplier_calendar.py └── views │ ├── product_view.xml │ └── res_partner_view.xml ├── test-requirements.txt └── vendor_transport_lead_time ├── README.rst ├── __init__.py ├── __manifest__.py ├── i18n ├── es.po ├── it.po └── vendor_transport_lead_time.pot ├── models ├── __init__.py ├── product_supplierinfo.py └── purchase_order_line.py ├── pyproject.toml ├── readme ├── CONTRIBUTORS.md ├── CREDITS.md ├── DESCRIPTION.md └── HISTORY.md ├── report └── purchase_order_template.xml ├── static └── description │ ├── icon.png │ └── index.html ├── tests ├── __init__.py ├── test_delay.py └── test_purchase_order.py └── views ├── product_supplierinfo.xml └── purchase_order_line.xml /.editorconfig: -------------------------------------------------------------------------------- 1 | # Configuration for known file extensions 2 | [*.{css,js,json,less,md,py,rst,sass,scss,xml,yaml,yml}] 3 | charset = utf-8 4 | end_of_line = lf 5 | indent_size = 4 6 | indent_style = space 7 | insert_final_newline = true 8 | trim_trailing_whitespace = true 9 | 10 | [*.{json,yml,yaml,rst,md}] 11 | indent_size = 2 12 | 13 | # Do not configure editor for libs and autogenerated content 14 | [{*/static/{lib,src/lib}/**,*/static/description/index.html,*/readme/../README.rst}] 15 | charset = unset 16 | end_of_line = unset 17 | indent_size = unset 18 | indent_style = unset 19 | insert_final_newline = false 20 | trim_trailing_whitespace = false 21 | -------------------------------------------------------------------------------- /checklog-odoo.cfg: -------------------------------------------------------------------------------- 1 | [checklog-odoo] 2 | ignore= 3 | WARNING.* 0 failed, 0 error\(s\).* 4 | -------------------------------------------------------------------------------- /prettier.config.cjs: -------------------------------------------------------------------------------- 1 | /** @type {import('prettier').Config} */ 2 | 3 | const config = { 4 | // https://github.com/prettier/prettier/issues/15388#issuecomment-1717746872 5 | plugins: [require.resolve("@prettier/plugin-xml")], 6 | bracketSpacing: false, 7 | printWidth: 88, 8 | proseWrap: "always", 9 | semi: true, 10 | trailingComma: "es5", 11 | xmlWhitespaceSensitivity: "preserve", 12 | }; 13 | 14 | module.exports = config; 15 | -------------------------------------------------------------------------------- /procurement_purchase_no_grouping/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /procurement_purchase_no_grouping/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2015 AvanzOsc (http://www.avanzosc.es) 2 | # Copyright 2015-2017 Tecnativa - Pedro M. Baeza 3 | # Copyright 2018 Tecnativa - Carlos Dauden 4 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) 5 | 6 | { 7 | "name": "Procurement Purchase No Grouping", 8 | "version": "18.0.1.0.0", 9 | "author": "AvanzOSC, Tecnativa, Odoo Community Association (OCA)", 10 | "website": "https://github.com/OCA/purchase-workflow", 11 | "category": "Procurements", 12 | "depends": ["purchase_stock"], 13 | "data": ["views/product_category_view.xml", "views/res_config_settings_views.xml"], 14 | "installable": True, 15 | "license": "AGPL-3", 16 | } 17 | -------------------------------------------------------------------------------- /procurement_purchase_no_grouping/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import product_category 2 | from . import stock_rule 3 | from . import purchase_order 4 | from . import res_config_settings 5 | from . import res_company 6 | -------------------------------------------------------------------------------- /procurement_purchase_no_grouping/models/res_config_settings.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 - Radovan Skolnik 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ResConfigSettings(models.TransientModel): 8 | """Configuration of default value for procurement purchase grouping.""" 9 | 10 | _inherit = "res.config.settings" 11 | _description = "Procurement purchase grouping settings" 12 | 13 | procured_purchase_grouping = fields.Selection( 14 | related="company_id.procured_purchase_grouping", 15 | readonly=False, 16 | ) 17 | -------------------------------------------------------------------------------- /procurement_purchase_no_grouping/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /procurement_purchase_no_grouping/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - [Tecnativa](https://www.tecnativa.com): 2 | - Pedro M. Baeza 3 | - Sergio Teruel 4 | - Carlos Dauden 5 | - Alexandre Díaz 6 | - Víctor Martínez 7 | - César A. Sánchez 8 | - Ana Juaristi \<\> 9 | - Alfredo de la Fuente \<\> 10 | - Radovan Skolnik \<\> 11 | - [Pesol](https://www.pesol.es): 12 | - Jonathan Oscategui Taza \<\> 13 | - `Heliconia Solutions Pvt. Ltd. `_ 14 | -------------------------------------------------------------------------------- /procurement_purchase_no_grouping/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module allows to not group generated purchase orders from 2 | procurements. The grouping behaviour can be configurable at product 3 | category level or fall back to system default. 4 | -------------------------------------------------------------------------------- /procurement_purchase_no_grouping/readme/ROADMAP.md: -------------------------------------------------------------------------------- 1 | - If you reuse the same procurement group between several sales orders, 2 | and using "No line grouping", they will be grouped anyways, as the 3 | criteria for grouping or not should be kept to the same procurement 4 | group, as it's the only way to get proper quantities updates after 5 | confirming the sales order. 6 | -------------------------------------------------------------------------------- /procurement_purchase_no_grouping/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/procurement_purchase_no_grouping/static/description/icon.png -------------------------------------------------------------------------------- /procurement_purchase_no_grouping/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_procurement_purchase_no_grouping 2 | -------------------------------------------------------------------------------- /procurement_purchase_no_grouping/views/product_category_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | product.category 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /purchase_advance_payment/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | from . import wizard 3 | -------------------------------------------------------------------------------- /purchase_advance_payment/data/ir_config_parameter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | purchase_advance_payment.auto_post_advance_payments 5 | True 6 | 7 | 8 | -------------------------------------------------------------------------------- /purchase_advance_payment/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import account_move 2 | from . import payment 3 | from . import purchase_order 4 | from . import res_config_settings 5 | -------------------------------------------------------------------------------- /purchase_advance_payment/models/payment.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2021 ForgeFlow S.L. 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class AccountPayment(models.Model): 8 | _inherit = "account.payment" 9 | 10 | purchase_id = fields.Many2one( 11 | "purchase.order", 12 | "Purchase", 13 | readonly=True, 14 | ) 15 | -------------------------------------------------------------------------------- /purchase_advance_payment/models/res_config_settings.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 ForgeFlow S.L. 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ResConfigSettings(models.TransientModel): 8 | _inherit = "res.config.settings" 9 | 10 | auto_post_purchase_advance_payments = fields.Boolean( 11 | config_parameter="purchase_advance_payment.auto_post_advance_payments", 12 | ) 13 | auto_reconcile_purchase_advance_payments = fields.Boolean( 14 | config_parameter="purchase_advance_payment.auto_reconcile_advance_payments", 15 | ) 16 | -------------------------------------------------------------------------------- /purchase_advance_payment/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_advance_payment/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Mateu Griful \<\> 2 | 3 | - Lois Rilo \<\> 4 | 5 | - [Trobz](https://trobz.com): 6 | 7 | > - Son Ho \<\> 8 | -------------------------------------------------------------------------------- /purchase_advance_payment/readme/CREDITS.md: -------------------------------------------------------------------------------- 1 | The migration of this module from 15.0 to 16.0 was financially supported 2 | by Camptocamp 3 | -------------------------------------------------------------------------------- /purchase_advance_payment/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | The module allows to add advance payments on purchase orders and Request 2 | for Quotation. The advance payments are allowed even before confirmation 3 | and before starting the billing process. 4 | -------------------------------------------------------------------------------- /purchase_advance_payment/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To use this module, you need to: 2 | 3 | - Go to a purchase order. 4 | - Click on "Pay Purchase Advance". 5 | - Select the Journal and specify the amount of the advanced payment. 6 | - "Make Advance Payment". 7 | 8 | When generating the invoice, the system displays the advanced payments, 9 | select those you want to add to the invoice. 10 | -------------------------------------------------------------------------------- /purchase_advance_payment/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | access_account_payment_purchase_advance,account.payment purchase_advance,account.model_account_payment,purchase.group_purchase_user,1,1,1,0 3 | access_account_payment_method_purchase_advance,account.payment.method purchase_advance,account.model_account_payment_method,purchase.group_purchase_user,1,0,0,0 4 | access_account_voucher_wizard_purchase_advance,access_account_voucher_wizard_purchase_advance,model_account_voucher_wizard_purchase,purchase.group_purchase_user,1,1,1,0 5 | -------------------------------------------------------------------------------- /purchase_advance_payment/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_advance_payment/static/description/icon.png -------------------------------------------------------------------------------- /purchase_advance_payment/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_advance_payment 2 | -------------------------------------------------------------------------------- /purchase_advance_payment/wizard/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_advance_payment_wizard 2 | -------------------------------------------------------------------------------- /purchase_all_shipments/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_all_shipments/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018 Camptocamp SA 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) 3 | { 4 | "name": "Purchase All Shipments", 5 | "version": "18.0.1.0.1", 6 | "author": "Camptocamp,Odoo Community Association (OCA)", 7 | "website": "https://github.com/OCA/purchase-workflow", 8 | "category": "Purchases", 9 | "license": "AGPL-3", 10 | "depends": ["purchase_stock"], 11 | "installable": True, 12 | "data": ["views/purchase_order_views.xml"], 13 | } 14 | -------------------------------------------------------------------------------- /purchase_all_shipments/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_order 2 | -------------------------------------------------------------------------------- /purchase_all_shipments/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_all_shipments/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Leonardo Pistone \<\> 2 | - Nicolas Mac Rouillon \<\> 3 | -------------------------------------------------------------------------------- /purchase_all_shipments/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_all_shipments/static/description/icon.png -------------------------------------------------------------------------------- /purchase_all_shipments/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_three_step_reception 2 | -------------------------------------------------------------------------------- /purchase_analytic_global/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_analytic_global/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014-2019 Camptocamp SA 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) 3 | 4 | { 5 | "name": "Purchase - Analytic Account Global", 6 | "version": "18.0.1.0.0", 7 | "author": "Camptocamp, Odoo Community Association (OCA)", 8 | "maintainer": "Camptocamp", 9 | "license": "AGPL-3", 10 | "category": "Purchase Management", 11 | "complexity": "easy", 12 | "depends": ["purchase"], 13 | "website": "https://github.com/OCA/purchase-workflow", 14 | "data": ["views/purchase_order.xml"], 15 | "installable": True, 16 | "auto_install": False, 17 | } 18 | -------------------------------------------------------------------------------- /purchase_analytic_global/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_order 2 | -------------------------------------------------------------------------------- /purchase_analytic_global/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_analytic_global/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - [Camptocamp](https://camptocamp.com): 2 | - Guewen Baconnier \<\> 3 | - Yannick Vaucher \<\> 4 | - Iryna Vyshnevska \<\> 5 | - Maksym Yankin \<\> 6 | 7 | - [ERP Harbor](https://erpharbor.com): 8 | - Sudhir Arya \<\> 9 | 10 | - [Trobz](https://trobz.com): 11 | - Phuc Tran \<\> 12 | -------------------------------------------------------------------------------- /purchase_analytic_global/readme/CREDITS.md: -------------------------------------------------------------------------------- 1 | The migration of this module from 15.0 to 18.0 was financially supported 2 | by Camptocamp 3 | -------------------------------------------------------------------------------- /purchase_analytic_global/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module adds an analytic account on the purchases that is applied on 2 | all the lines distributions. 3 | -------------------------------------------------------------------------------- /purchase_analytic_global/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_analytic_global/static/description/icon.png -------------------------------------------------------------------------------- /purchase_analytic_global/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_analytic_global 2 | -------------------------------------------------------------------------------- /purchase_blanket_order/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | 3 | from . import models 4 | from . import wizard 5 | -------------------------------------------------------------------------------- /purchase_blanket_order/data/sequence.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Purchase Blanket Order 6 | purchase.blanket.order 7 | PBO 8 | 3 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /purchase_blanket_order/models/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | 3 | from . import blanket_orders 4 | from . import purchase_order 5 | from . import purchase_config_settings 6 | -------------------------------------------------------------------------------- /purchase_blanket_order/models/purchase_config_settings.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2018 ForgeFlow S.L. (https://www.forgeflow.com) 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class PurchaseConfigSettings(models.TransientModel): 8 | _inherit = "res.config.settings" 9 | 10 | group_purchase_blanket_disable_adding_lines = fields.Boolean( 11 | string="Disable adding more lines to POs", 12 | implied_group="purchase_blanket_order." 13 | "purchase_blanket_orders_disable_adding_lines", 14 | ) 15 | -------------------------------------------------------------------------------- /purchase_blanket_order/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_blanket_order/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Adrià Gil Sorribes \<\> 2 | - Jordi Ballester Alomar \<\> 3 | - Héctor Villarreal \<\> 4 | - Lois Rilo \<\> 5 | -------------------------------------------------------------------------------- /purchase_blanket_order/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | A purchase blanket order is a pre-agreement to purchase a certain number 2 | of quantities of products at a specific price. From a confirmed blanket 3 | order, the users can create new purchase orders at such price, until the 4 | blanket order expires due to reaching the validity date. 5 | -------------------------------------------------------------------------------- /purchase_blanket_order/report/report.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Purchase Blanket Order 5 | purchase.blanket.order 6 | qweb-pdf 7 | purchase_blanket_order.report_blanketorder 8 | purchase_blanket_order.report_blanketorder 9 | 10 | report 11 | 12 | 13 | -------------------------------------------------------------------------------- /purchase_blanket_order/static/description/BO_actions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_blanket_order/static/description/BO_actions.png -------------------------------------------------------------------------------- /purchase_blanket_order/static/description/BO_form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_blanket_order/static/description/BO_form.png -------------------------------------------------------------------------------- /purchase_blanket_order/static/description/BO_lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_blanket_order/static/description/BO_lines.png -------------------------------------------------------------------------------- /purchase_blanket_order/static/description/BO_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_blanket_order/static/description/BO_menu.png -------------------------------------------------------------------------------- /purchase_blanket_order/static/description/PO_BOLine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_blanket_order/static/description/PO_BOLine.png -------------------------------------------------------------------------------- /purchase_blanket_order/static/description/PO_from_BO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_blanket_order/static/description/PO_from_BO.png -------------------------------------------------------------------------------- /purchase_blanket_order/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_blanket_order/static/description/icon.png -------------------------------------------------------------------------------- /purchase_blanket_order/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | 3 | from . import test_purchase_blanket_order 4 | from . import test_purchase_order 5 | -------------------------------------------------------------------------------- /purchase_blanket_order/wizard/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | 3 | from . import create_purchase_orders 4 | -------------------------------------------------------------------------------- /purchase_cancel_reason/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2013 Guewen Baconnier, Camptocamp SA 2 | # Copyright 2017 Okia SPRL 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). 4 | from . import wizard 5 | from . import models 6 | -------------------------------------------------------------------------------- /purchase_cancel_reason/data/purchase_order_cancel_reason.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Just for Quotation 5 | 6 | 7 | Service no longer needed 8 | 9 | 10 | Other Service Provider selected 11 | 12 | 13 | -------------------------------------------------------------------------------- /purchase_cancel_reason/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_order 2 | from . import purchase_order_cancel_reason 3 | -------------------------------------------------------------------------------- /purchase_cancel_reason/models/purchase_order_cancel_reason.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 ACSONE SA/NV 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class PurchaseOrderCancelReason(models.Model): 8 | _name = "purchase.order.cancel.reason" 9 | _description = "Purchase Order Cancel Reason" 10 | 11 | name = fields.Char(string="Reason", required=True, translate=True) 12 | -------------------------------------------------------------------------------- /purchase_cancel_reason/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_cancel_reason/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Guewen Baconnier, Camptocamp SA 2 | - Sylvain Van Hoof \<\> 3 | - [Ecosoft](http://ecosoft.co.th): 4 | - Kitti U. \<\> 5 | - Tharathip C. \<\> 6 | - `Heliconia Solutions Pvt. Ltd. `_ 7 | -------------------------------------------------------------------------------- /purchase_cancel_reason/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | When a purchase order is canceled, a reason must be given, it is chosen 2 | from a configured list. 3 | -------------------------------------------------------------------------------- /purchase_cancel_reason/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | - During purchase order state equal to Draft, RFQ Sent or Purchase Order 2 | - Click at "Cancel" button, a wizard will show a list of cancel reasons 3 | - Choose a reason and confirm cancellation, the reason will be stamped 4 | in the purchase order 5 | -------------------------------------------------------------------------------- /purchase_cancel_reason/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | access_purchase_order_cancel_reason_user,access_purchase_order_cancel_reason user,model_purchase_order_cancel_reason,purchase.group_purchase_user,1,0,0,0 3 | access_purchase_order_cancel_reason_manager,access_purchase_order_cancel_reason manager,model_purchase_order_cancel_reason,purchase.group_purchase_manager,1,1,1,1 4 | access_purchase_order_cancel_user,access_purchase_order_cancel,model_purchase_order_cancel,purchase.group_purchase_user,1,1,1,1 5 | -------------------------------------------------------------------------------- /purchase_cancel_reason/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_cancel_reason/static/description/icon.png -------------------------------------------------------------------------------- /purchase_cancel_reason/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2013 Guewen Baconnier, Camptocamp SA 2 | # Copyright 2017 Okia SPRL 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). 4 | from . import test_purchase_cancel_reason 5 | -------------------------------------------------------------------------------- /purchase_cancel_reason/wizard/__init__.py: -------------------------------------------------------------------------------- 1 | # © 2013 Guewen Baconnier, Camptocamp SA 2 | # Copyright 2017 Okia SPRL 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). 4 | from . import purchase_order_cancel 5 | -------------------------------------------------------------------------------- /purchase_commercial_partner/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_commercial_partner/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_order 2 | -------------------------------------------------------------------------------- /purchase_commercial_partner/models/purchase_order.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016-2022 Akretion France (https://akretion.com/) 2 | # @author: Alexis de Lattre 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | 5 | from odoo import fields, models 6 | 7 | 8 | class PurchaseOrder(models.Model): 9 | _inherit = "purchase.order" 10 | 11 | commercial_partner_id = fields.Many2one( 12 | comodel_name="res.partner", 13 | related="partner_id.commercial_partner_id", 14 | store=True, 15 | index=True, 16 | string="Commercial Vendor", 17 | ) 18 | -------------------------------------------------------------------------------- /purchase_commercial_partner/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_commercial_partner/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Alexis de Lattre \<\> 2 | - Sudhir Arya \<\> 3 | - Tharathip Chaweewongphan \<\> 4 | - [Binhex](https://binhex.cloud/): 5 | - Deriman Alonso -------------------------------------------------------------------------------- /purchase_commercial_partner/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module adds a related stored field *Commercial Supplier* on 2 | purchase orders. It is similar to the native field *Commercial Partner* 3 | on invoices. This module is the twin brother of the OCA module 4 | *sale_commercial_partner* located in the [sale-workflow 5 | project](https://github.com/OCA/sale-workflow/). 6 | -------------------------------------------------------------------------------- /purchase_commercial_partner/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | In the search view of RFQ/purchase orders, you can group by *Commercial 2 | Supplier*. 3 | -------------------------------------------------------------------------------- /purchase_commercial_partner/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_commercial_partner/static/description/icon.png -------------------------------------------------------------------------------- /purchase_commercial_partner/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_commercial_partner 2 | -------------------------------------------------------------------------------- /purchase_default_terms_conditions/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_default_terms_conditions/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import res_company 2 | from . import res_config_settings 3 | from . import res_partner 4 | from . import purchase 5 | -------------------------------------------------------------------------------- /purchase_default_terms_conditions/models/res_company.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 - TODAY, Marcel Savegnago - Escodoo 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ResCompany(models.Model): 8 | _inherit = "res.company" 9 | 10 | purchase_note = fields.Html( 11 | string="Purchase Default Terms and Conditions", translate=True 12 | ) 13 | -------------------------------------------------------------------------------- /purchase_default_terms_conditions/models/res_config_settings.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 - TODAY, Marcel Savegnago - Escodoo 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ResConfigSettings(models.TransientModel): 8 | _inherit = "res.config.settings" 9 | 10 | purchase_note = fields.Html( 11 | related="company_id.purchase_note", 12 | string="Purchase Terms & Conditions", 13 | readonly=False, 14 | ) 15 | 16 | use_purchase_note = fields.Boolean( 17 | string="Use Purchase Default Terms & Conditions", 18 | config_parameter="purchase.use_purchase_note", 19 | ) 20 | -------------------------------------------------------------------------------- /purchase_default_terms_conditions/models/res_partner.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2022 Open Source Integrators 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ResPartner(models.Model): 8 | _inherit = "res.partner" 9 | 10 | purchase_note = fields.Html( 11 | string="Purchase Default Terms and Conditions", translate=True 12 | ) 13 | -------------------------------------------------------------------------------- /purchase_default_terms_conditions/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_default_terms_conditions/readme/CONFIGURE.md: -------------------------------------------------------------------------------- 1 | To configure this module, you need to: 2 | 3 | 1. Go to Purchase Settings 4 | 2. Enable Default Terms & Conditions 5 | 3. Set Default Terms & Conditions 6 | 4. Set Terms & Conditions in Suppler 7 | -------------------------------------------------------------------------------- /purchase_default_terms_conditions/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - [Escodoo](https://www.escodoo.com.br): 2 | - Marcel Savegnago \<\> 3 | - Murtaza Mithaiwala \<\> 4 | - Quan Nguyen \<\> 5 | - [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) 6 | - Bhavesh Heliconia 7 | 8 | -------------------------------------------------------------------------------- /purchase_default_terms_conditions/readme/CREDITS.md: -------------------------------------------------------------------------------- 1 | The development of this module has been financially supported by: 2 | 3 | - Escodoo \<\> 4 | -------------------------------------------------------------------------------- /purchase_default_terms_conditions/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module allows purchase default terms & conditions from Supplier or 2 | Company 3 | -------------------------------------------------------------------------------- /purchase_default_terms_conditions/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To use this module, you need to: 2 | 3 | 1. Go do Purchase App 4 | 2. Create a New Purchase/Quotation Order 5 | -------------------------------------------------------------------------------- /purchase_default_terms_conditions/static/description/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_default_terms_conditions/static/description/banner.png -------------------------------------------------------------------------------- /purchase_default_terms_conditions/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_default_terms_conditions/static/description/icon.png -------------------------------------------------------------------------------- /purchase_default_terms_conditions/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2022 Open Source Integrators 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | 4 | 5 | from . import test_purchase_order 6 | -------------------------------------------------------------------------------- /purchase_default_terms_conditions/views/res_partner_views.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | res.partner.purchase.note.form.inherit 4 | res.partner 5 | 6 | 36 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /purchase_delivery_split_date/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 2 | 3 | from . import models 4 | -------------------------------------------------------------------------------- /purchase_delivery_split_date/models/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 2 | 3 | from . import purchase_order_line, stock_move, stock_picking 4 | -------------------------------------------------------------------------------- /purchase_delivery_split_date/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_delivery_split_date/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Philippe Rossi \<\> (initial patch against v6.0) 2 | - Lionel Sausin \<\> (modularization for v7+) 3 | - Jordi Ballester Alomar \<\> 4 | (modularization v8, v9) 5 | - Lois Rilo \<\> (migration to v10) 6 | - Alexandre Fayolle \<\> 7 | - Pimolnat Suntian \<\> 8 | - Mallory Marcot \<\> 9 | - Denis Roussel \<\> 10 | - Jacques-Etienne Baudoux (BCIM) \<\> 11 | -------------------------------------------------------------------------------- /purchase_delivery_split_date/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | When this module is installed, each Purchase Order you confirm will 2 | generate one Incoming Shipment for each schedule date indicated in the 3 | Purchase Order Lines. 4 | 5 | Once the Purchase Order has been confirmed, subsequent changes made to 6 | the scheduled dates in the PO lines will produce a reorganization of the 7 | corresponding stock moves in the Incoming Shipments, creating/deleting 8 | new Incoming Shipments when needed, to ensure that each Incoming 9 | Shipment contains moves to be received in the same date. 10 | 11 | This module is also designed for extensibility, so that you can define 12 | in other modules new criteria to split deliveries. 13 | -------------------------------------------------------------------------------- /purchase_delivery_split_date/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | When a Purchase Order is confirmed, shipments will be grouped by same 2 | scheduled date. 3 | -------------------------------------------------------------------------------- /purchase_delivery_split_date/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_delivery_split_date/static/description/icon.png -------------------------------------------------------------------------------- /purchase_delivery_split_date/static/description/split_delivery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_delivery_split_date/static/description/split_delivery.png -------------------------------------------------------------------------------- /purchase_delivery_split_date/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 2 | 3 | from . import test_purchase_delivery 4 | -------------------------------------------------------------------------------- /purchase_deposit/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Elico Corp, Dominique K. 2 | # Copyright 2019 Ecosoft Co., Ltd., Kitti U. 3 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 4 | 5 | from . import models 6 | from . import wizard 7 | -------------------------------------------------------------------------------- /purchase_deposit/models/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Elico Corp, Dominique K. 2 | # Copyright 2019 Ecosoft Co., Ltd., Kitti U. 3 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 4 | 5 | from . import account_move 6 | from . import res_company 7 | from . import res_config_settings 8 | from . import purchase 9 | -------------------------------------------------------------------------------- /purchase_deposit/models/account_move.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Quartile Limited (https://www.quartile.co) 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 3 | 4 | from odoo import models 5 | 6 | 7 | class AccountMove(models.Model): 8 | _inherit = "account.move" 9 | 10 | def action_post(self): 11 | res = super().action_post() 12 | for line in self.line_ids: 13 | if not line.purchase_line_id.is_deposit: 14 | continue 15 | line.purchase_line_id.taxes_id = line.tax_ids 16 | line.purchase_line_id.price_unit = line.price_unit 17 | return res 18 | -------------------------------------------------------------------------------- /purchase_deposit/models/res_company.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Quartile Limited 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ResCompany(models.Model): 8 | _inherit = "res.company" 9 | 10 | purchase_deposit_product_id = fields.Many2one( 11 | comodel_name="product.product", 12 | string="Purchase Deposit Product", 13 | domain=[("type", "=", "service")], 14 | help="Default product used for payment advances.", 15 | ) 16 | -------------------------------------------------------------------------------- /purchase_deposit/models/res_config_settings.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Elico Corp, Dominique K. 2 | # Copyright 2019 Ecosoft Co., Ltd., Kitti U. 3 | # Copyright 2023 Quartile Limited 4 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 5 | 6 | from odoo import fields, models 7 | 8 | 9 | class ResConfigSettings(models.TransientModel): 10 | _inherit = "res.config.settings" 11 | 12 | purchase_deposit_product_id = fields.Many2one( 13 | related="company_id.purchase_deposit_product_id", 14 | readonly=False, 15 | ) 16 | -------------------------------------------------------------------------------- /purchase_deposit/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_deposit/readme/CONFIGURATION.rst: -------------------------------------------------------------------------------- 1 | After install this module, you need to select the product "Purchase Deposit" in 2 | configuration window to be used as default product when create deposit bill. 3 | 4 | Go to Purchase > Configuration > Settings, then select product "Purchase Deposit" 5 | 6 | Note: If this is not done, by using "Register Deposit" for the first time will 7 | also create product "Purchase Deposit" for you automatically. 8 | -------------------------------------------------------------------------------- /purchase_deposit/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Dominique K. \<\> 2 | - Kitti Upariphutthiphong \<\> 3 | - Rattapong Chokmasermkul \<\> 4 | - Joan Mateu \<\> 5 | - [Quartile](https://www.quartile.co): 6 | - Aung Ko Ko Lin 7 | -------------------------------------------------------------------------------- /purchase_deposit/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module allow purchase order to register deposit similar to that in 2 | sales order 3 | -------------------------------------------------------------------------------- /purchase_deposit/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | When purchase order is confirmed, a new button "Register Deposit" will 2 | appear. Normally, deposit will be used to create the 1st bill (as 3 | deposit). 4 | 5 | 1. On confirmed purchase order, click Register Deposit button, wizard 6 | will open 7 | 2. 2 type of deposit bill can be create 1) Down Payment (percentage) 2) 8 | Deposit Payment (fixed amount) 9 | 3. Fill in the value and click Create bill or just create deposit. 10 | 11 | As deposit is created, when user click button "Create Bill" again in 12 | purchase order, the Vendor Bill will be created with deposit amount 13 | deducted. 14 | -------------------------------------------------------------------------------- /purchase_deposit/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | access_purchase_advance_payment_inv,access_purchase_advance_payment_inv,model_purchase_advance_payment_inv,base.group_user,1,1,1,1 3 | -------------------------------------------------------------------------------- /purchase_deposit/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_deposit/static/description/icon.png -------------------------------------------------------------------------------- /purchase_deposit/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Elico Corp, Dominique K. 2 | # Copyright 2019 Ecosoft Co., Ltd., Kitti U. 3 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 4 | 5 | from . import test_purchase_deposit 6 | -------------------------------------------------------------------------------- /purchase_deposit/wizard/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Elico Corp, Dominique K. 2 | # Copyright 2019 Ecosoft Co., Ltd., Kitti U. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). 4 | 5 | from . import purchase_make_invoice_advance 6 | -------------------------------------------------------------------------------- /purchase_exception/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models, wizard 2 | -------------------------------------------------------------------------------- /purchase_exception/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import exception_rule 2 | from . import purchase 3 | from . import purchase_line 4 | -------------------------------------------------------------------------------- /purchase_exception/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_exception/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Mourad EL HADJ MIMOUNE \<\> 2 | - Sudhir Arya \<\> 3 | - Kitti U. \<\> (migration to v14) 4 | - `Trobz `_: 5 | - Son Ho \<\> 6 | -------------------------------------------------------------------------------- /purchase_exception/readme/CREDITS.md: -------------------------------------------------------------------------------- 1 | The migration of this module from 16.0 to 17.0 was financially supported by Camptocamp 2 | -------------------------------------------------------------------------------- /purchase_exception/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module allows you attach several customizable exceptions to your 2 | purchase order in a way that you can filter orders by exceptions type 3 | and fix them. 4 | 5 | This is especially useful in an scenario for mass purchases order 6 | import, because it's likely some orders have errors when you import them 7 | (like product not found in Odoo, wrong line format etc.) 8 | -------------------------------------------------------------------------------- /purchase_exception/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | access_purchase_exception_confirm,access_purchase_exception_confirm,model_purchase_exception_confirm,base.group_user,1,1,1,1 3 | -------------------------------------------------------------------------------- /purchase_exception/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_exception/static/description/icon.png -------------------------------------------------------------------------------- /purchase_exception/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_exception 2 | -------------------------------------------------------------------------------- /purchase_exception/wizard/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_exception_confirm 2 | -------------------------------------------------------------------------------- /purchase_exception/wizard/purchase_exception_confirm_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Outstanding exceptions to manage 5 | ir.actions.act_window 6 | purchase.exception.confirm 7 | form 8 | 9 | new 10 | 11 | 12 | -------------------------------------------------------------------------------- /purchase_fop_shipping/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_fop_shipping/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import partner 2 | from . import purchase 3 | -------------------------------------------------------------------------------- /purchase_fop_shipping/models/partner.py: -------------------------------------------------------------------------------- 1 | # © 2014-2016 Akretion (http://www.akretion.com) 2 | # @author Mourad EL HADJ MIMOUNE 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). 4 | 5 | 6 | from odoo import fields, models 7 | 8 | 9 | class ResPartner(models.Model): 10 | _inherit = "res.partner" 11 | 12 | fop_shipping = fields.Float( 13 | string="FOP shipping", 14 | help="Min purchase order amount for FOP shipping", 15 | company_dependent=True, 16 | digits="Account", 17 | ) 18 | -------------------------------------------------------------------------------- /purchase_fop_shipping/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_fop_shipping/security/res_groups.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FOP shipping Manager 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /purchase_fop_shipping/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_fop_shipping/static/description/icon.png -------------------------------------------------------------------------------- /purchase_fop_shipping/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_fop_shipping 2 | -------------------------------------------------------------------------------- /purchase_fop_shipping/views/res_partner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | res.partner 5 | form 6 | 7 | 8 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /purchase_force_invoiced/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) 2 | 3 | from . import model 4 | from . import reports 5 | -------------------------------------------------------------------------------- /purchase_force_invoiced/migrations/16.0.1.0.0/post-migrate.py: -------------------------------------------------------------------------------- 1 | from odoo import SUPERUSER_ID, api 2 | 3 | 4 | def migrate(cr, version): 5 | """Allow all purchase managers to set orders to force invoiced""" 6 | env = api.Environment(cr, SUPERUSER_ID, {}) 7 | env.ref("purchase.group_purchase_manager").implied_ids += env.ref( 8 | "purchase_force_invoiced.group_force_invoiced" 9 | ) 10 | -------------------------------------------------------------------------------- /purchase_force_invoiced/model/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) 2 | 3 | from . import purchase_order 4 | from . import purchase_order_line 5 | -------------------------------------------------------------------------------- /purchase_force_invoiced/model/purchase_order_line.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) 2 | 3 | from odoo import api, models 4 | 5 | 6 | class PurchaseOrderLine(models.Model): 7 | _inherit = "purchase.order.line" 8 | 9 | @api.depends("order_id.force_invoiced") 10 | def _compute_qty_invoiced(self): 11 | """Reset qty_to_invoice as per order force invoiced""" 12 | res = super()._compute_qty_invoiced() 13 | self.filtered( 14 | lambda pol: pol.order_id.force_invoiced and pol.qty_to_invoice 15 | ).qty_to_invoice = 0 16 | return res 17 | -------------------------------------------------------------------------------- /purchase_force_invoiced/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_force_invoiced/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Jordi Ballester \<\> 2 | - Rattapong Chokmasermkul \<\> 3 | - Bert Van Groenendael \<\> 4 | - Stefan Rijnhart \<\> 5 | -------------------------------------------------------------------------------- /purchase_force_invoiced/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module adds the possibility for users to force the invoice status 2 | of the purchase orders to 'Fully Billed', even when not all the 3 | quantities, ordered or delivered, have been invoiced. 4 | 5 | This feature is useful in the following scenario: 6 | 7 | - The supplier disputes the quantities to be billed for, after the 8 | products have been delivered to her/him, and you agree to reduce the 9 | quantity to invoice (without expecting a refund). 10 | - When migrating from a previous Odoo version, in some cases there is 11 | less quantity billed to what was delivered, and you don't want these 12 | old purchase orders to appear in your 'Waiting Bills' list. 13 | -------------------------------------------------------------------------------- /purchase_force_invoiced/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | 1. Create a purchase order and confirm it. 2 | 2. Receive the products/services. 3 | 3. Create a vendor bill and reduce the invoiced quantity. The purchase 4 | order invoicing status is 'Waiting Bills'. 5 | 4. Lock the Purchase Order and change its status to 'Done'. 6 | 5. Check the field 'Force Invoiced'. 7 | 8 | The field is only visible for users that have the technical setting 'Set 9 | purchase orders to Force Invoiced'. By default, all purchase managers have this 10 | setting. 11 | -------------------------------------------------------------------------------- /purchase_force_invoiced/reports/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) 2 | 3 | from . import purchase_report 4 | -------------------------------------------------------------------------------- /purchase_force_invoiced/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_force_invoiced/static/description/icon.png -------------------------------------------------------------------------------- /purchase_force_invoiced/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) 2 | 3 | from . import test_purchase_force_invoiced 4 | -------------------------------------------------------------------------------- /purchase_force_invoiced_quantity/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 Cetmix OÜ 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | 4 | from . import models 5 | -------------------------------------------------------------------------------- /purchase_force_invoiced_quantity/demo/demo_product.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Purchase Force Invoiced qty product 1 5 | service 6 | receive 7 | 8 | 9 | 10 | Purchase Force Invoiced qty product 2 11 | service 12 | receive 13 | 14 | 15 | -------------------------------------------------------------------------------- /purchase_force_invoiced_quantity/models/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 Cetmix OÜ 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | 4 | from . import purchase_order_line 5 | -------------------------------------------------------------------------------- /purchase_force_invoiced_quantity/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_force_invoiced_quantity/readme/CONFIGURE.md: -------------------------------------------------------------------------------- 1 | No configuration is required. 2 | -------------------------------------------------------------------------------- /purchase_force_invoiced_quantity/readme/CONTEXT.md: -------------------------------------------------------------------------------- 1 | This module implements additional featured for the [Purchase Force 2 | Invoiced](https://github.com/OCA/purchase-workflow/tree/16.0/purchase_force_invoiced) 3 | module. 4 | 5 | It covers the following scenarios: 6 | 7 | - One need to modify the quantity to be invoiced after the products were 8 | received. Eg .you negotiated an extra discount from your vendor. 9 | - You would like to fix some issues with quantities invoiced cause by 10 | incorrect data entry. 11 | -------------------------------------------------------------------------------- /purchase_force_invoiced_quantity/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - [Cetmix](http://cetmix.com) 2 | 3 | > - Ivan Sokolov 4 | > - Dessan Hemrayev 5 | 6 | - Heliconia Solutions Pvt. Ltd. \<\> 7 | -------------------------------------------------------------------------------- /purchase_force_invoiced_quantity/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module add a new "Force Invoiced" field to purchase order lines. 2 | This field is used as modifier when computing quantity to be invoiced. 3 | 4 | Current behaviour: quantity to invoice = delivered - invoiced 5 | 6 | Implemented behaviour: quantity to invoice = delivered - invoiced - 7 | force invoiced 8 | -------------------------------------------------------------------------------- /purchase_force_invoiced_quantity/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | Open a purchase order and add an amount into the "Force Invoiced" field. 2 | Amount to invoice will be adjusted accordingly. This field is optional 3 | so you can hide it if you don't need it. 4 | -------------------------------------------------------------------------------- /purchase_force_invoiced_quantity/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_force_invoiced_quantity/static/description/icon.png -------------------------------------------------------------------------------- /purchase_force_invoiced_quantity/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 Cetmix OÜ 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | 4 | from . import test_purchase_force_invoiced_quantity 5 | -------------------------------------------------------------------------------- /purchase_invoice_method/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_invoice_method/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 CreuBlanca 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | 4 | { 5 | "name": "Purchase Invoice Method", 6 | "summary": """ 7 | Allow to force the invoice method of a purchase""", 8 | "version": "18.0.1.0.0", 9 | "license": "AGPL-3", 10 | "author": "CreuBlanca, Odoo Community Association (OCA)", 11 | "website": "https://github.com/OCA/purchase-workflow", 12 | "depends": ["purchase"], 13 | "data": [ 14 | "views/purchase_order.xml", 15 | ], 16 | "demo": [], 17 | } 18 | -------------------------------------------------------------------------------- /purchase_invoice_method/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_order 2 | -------------------------------------------------------------------------------- /purchase_invoice_method/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_invoice_method/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Enric Tobella \<\> 2 | - Kevin Luna \<\> 3 | - `Heliconia Solutions Pvt. Ltd. `_ 4 | -------------------------------------------------------------------------------- /purchase_invoice_method/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module adds the possibility for users to force the invoice status 2 | of the purchase orders to 'Waiting Bills' so they can create a bill. 3 | Also, you can force an "On ordered quantites" invoice method to "On 4 | received quantites". 5 | 6 | Example: you can bill a purchase even when you haven't received the 7 | product/service. 8 | -------------------------------------------------------------------------------- /purchase_invoice_method/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | 1. Create a purchase order and confirm it. 2 | 2. Go to page "Other information" and select an option of the "Invoice 3 | Method" field. 4 | 3. 1. If "On ordered quantited" is selected you can bill a purchase 5 | even you haven't received the product. 6 | 4. 1. If "On received quantited" is selected you cannot bill a 7 | purchase if you haven't received the product. 8 | -------------------------------------------------------------------------------- /purchase_invoice_method/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_invoice_method/static/description/icon.png -------------------------------------------------------------------------------- /purchase_invoice_method/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_invoice_method 2 | -------------------------------------------------------------------------------- /purchase_invoice_method/views/purchase_order.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | purchase.order.form (in purchase_invoice_method) 7 | purchase.order 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /purchase_invoice_plan/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) 3 | 4 | from . import models 5 | from . import wizard 6 | -------------------------------------------------------------------------------- /purchase_invoice_plan/data/purchase_data.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Purchase Invoice Plan Percent 4 | 6 5 | 6 | 7 | -------------------------------------------------------------------------------- /purchase_invoice_plan/models/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) 3 | 4 | from . import purchase_order 5 | from . import purchase_invoice_plan 6 | -------------------------------------------------------------------------------- /purchase_invoice_plan/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_invoice_plan/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Kitti Upariphutthiphong \<\> 2 | - Rattapong Chokmasermkul \<\> 3 | - Italo Lopes \<\> 4 | -------------------------------------------------------------------------------- /purchase_invoice_plan/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | By standard feature, user can gradually create partial invoices, one by 2 | one and in step create invoice the standard call invoice. This module 3 | add ability to create invoices based on the predefined invoice plan, 4 | either all at once, or one by one. 5 | -------------------------------------------------------------------------------- /purchase_invoice_plan/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | - Create new purchase quotation as per normal process 2 | - Select option "Use Invoice Plan", a new Invoice Plan tab will appear 3 | - Click on "=\> Create Invoice Plan" link to open invoice planning 4 | wizard 5 | - Do plan for number of installment, start date and interval 6 | - Double check that each installment has correct plan percentage 7 | - After confirm purchases order, we have new option to "Create Bill by 8 | Plan" 9 | - User can create only next bill or create all bills at the same time 10 | -------------------------------------------------------------------------------- /purchase_invoice_plan/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | access_purchase_invoice_plan,access_purchase_invoice_plan,model_purchase_invoice_plan,purchase.group_purchase_user,1,1,1,1 3 | access_purchase_create_invoice_plan,access_purchase_create_invoice_plan,model_purchase_create_invoice_plan,purchase.group_purchase_user,1,1,1,1 4 | access_purchase_make_planned_invoice,access_purchase_make_planned_invoice,model_purchase_make_planned_invoice,purchase.group_purchase_user,1,1,1,1 5 | -------------------------------------------------------------------------------- /purchase_invoice_plan/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_invoice_plan/static/description/icon.png -------------------------------------------------------------------------------- /purchase_invoice_plan/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) 3 | 4 | from . import test_purchase_invoice_plan 5 | -------------------------------------------------------------------------------- /purchase_invoice_plan/wizard/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) 3 | from . import purchase_create_invoice_plan 4 | from . import purchase_make_planned_invoice 5 | -------------------------------------------------------------------------------- /purchase_last_price_info/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_last_price_info/__manifest__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html 2 | 3 | { 4 | "name": "Purchase Product Last Price Info", 5 | "version": "18.0.1.0.0", 6 | "category": "Purchase Management", 7 | "license": "AGPL-3", 8 | "author": "AvanzOSC, Tecnativa, Odoo Community Association (OCA)", 9 | "development_status": "Production/Stable", 10 | "maintainers": ["LoisRForgeFlow"], 11 | "website": "https://github.com/OCA/purchase-workflow", 12 | "depends": ["purchase"], 13 | "data": ["views/product_views.xml"], 14 | "installable": True, 15 | } 16 | -------------------------------------------------------------------------------- /purchase_last_price_info/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import product_product 2 | from . import product_template 3 | -------------------------------------------------------------------------------- /purchase_last_price_info/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_last_price_info/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Alfredo de la Fuente \<\> 2 | - Oihane Crucelaegui \<\> 3 | - Ana Juaristi \<\> 4 | - Carlos Lopez Mite \<\> 5 | - Adria Gil Sorribes \<\> 6 | - Lois Rilo \<\> 7 | - Rattapong Chokmasermkul \<\> 8 | - Vishnu Vanneri \<\> 9 | - [Tecnativa](https://www.tecnativa.com): 10 | - Víctor Martínez 11 | - Pedro M. Baeza 12 | - [Bloopark systems](https://www.bloopark.de/): 13 | - Achraf Mhadhbi \<\> 14 | -------------------------------------------------------------------------------- /purchase_last_price_info/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module adds the last purchase info of the product. What is shown is the 2 | supplier, date of purchase, and price of the most recently confirmed purchase 3 | order. 4 | -------------------------------------------------------------------------------- /purchase_last_price_info/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | In order to use this module, go to: 2 | 3 | - Products -\> Tab Purchase (see screenshot) 4 | 5 | ![Purchase Last Price Info](../static/description/purchase_last_price.png) 6 | -------------------------------------------------------------------------------- /purchase_last_price_info/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_last_price_info/static/description/icon.png -------------------------------------------------------------------------------- /purchase_last_price_info/static/description/purchase_last_price.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_last_price_info/static/description/purchase_last_price.png -------------------------------------------------------------------------------- /purchase_last_price_info/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_last_price_info 2 | -------------------------------------------------------------------------------- /purchase_manual_currency/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 2 | 3 | from . import models 4 | -------------------------------------------------------------------------------- /purchase_manual_currency/models/__init__.py: -------------------------------------------------------------------------------- 1 | # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). 2 | 3 | from . import res_company 4 | from . import res_config_settings 5 | from . import purchase_order_line 6 | from . import purchase 7 | -------------------------------------------------------------------------------- /purchase_manual_currency/models/res_company.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Ecosoft Co., Ltd. (http://ecosoft.co.th) 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ResCompany(models.Model): 8 | _inherit = "res.company" 9 | 10 | manual_currency_po_inv = fields.Selection( 11 | selection=[ 12 | ("currency_inv", "Use currency invoice"), 13 | ("currency_po", "Use currency purchase"), 14 | ], 15 | default="currency_inv", 16 | string="Manual Currency Purchase - Invoice", 17 | ) 18 | -------------------------------------------------------------------------------- /purchase_manual_currency/models/res_config_settings.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Ecosoft Co., Ltd. (http://ecosoft.co.th) 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ResConfigSettings(models.TransientModel): 8 | _inherit = "res.config.settings" 9 | 10 | manual_currency_po_inv = fields.Selection( 11 | related="company_id.manual_currency_po_inv", readonly=False 12 | ) 13 | -------------------------------------------------------------------------------- /purchase_manual_currency/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_manual_currency/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Saran Lim. \<\> 2 | - [Prothai](https://www.prothaitechnology.com:): 3 | - Prapassorn Sornkaew \<\> 4 | (migrate to v14) 5 | -------------------------------------------------------------------------------- /purchase_manual_currency/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module allows users to update the currency manual of Purchase Order 2 | in draft state. 3 | 4 | Example, The company will make a deal with vendor before buy product 5 | that process maybe not same day. So, currency rate in purchase order 6 | will calculated from order date but Company get currency rate from date 7 | of make a deal or special currency rate. 8 | -------------------------------------------------------------------------------- /purchase_manual_currency/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To use this module, the company have to access rights Multi Currencies. 2 | 3 | Step to used manual currency: \#. Go to Invoicing \> Configuration \> 4 | Settings \> Currencies \> Multi-Currencies \#. Go to Purchase \> Create 5 | new purchase. \#. Change to other currency (not company currency) \#. 6 | Check Manual Currency and specify your currency rate 7 | -------------------------------------------------------------------------------- /purchase_manual_currency/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_manual_currency/static/description/icon.png -------------------------------------------------------------------------------- /purchase_manual_currency/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 2 | from . import test_purchase_manual_currency 3 | -------------------------------------------------------------------------------- /purchase_manual_delivery/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | from . import report 3 | from . import wizard 4 | -------------------------------------------------------------------------------- /purchase_manual_delivery/migrations/17.0.1.0.0/pre-migration.py: -------------------------------------------------------------------------------- 1 | from odoo.tools.sql import column_exists 2 | 3 | 4 | def migrate(cr, version): 5 | """Initialize qty_in_receipt as existing_qty - qty_received""" 6 | if not column_exists(cr, "purchase_order_line", "qty_in_receipt") and column_exists( 7 | cr, "purchase_order_line", "existing_qty" 8 | ): 9 | cr.execute( 10 | """ 11 | alter table purchase_order_line 12 | add column qty_in_receipt numeric; 13 | update purchase_order_line 14 | set qty_in_receipt = coalesce(existing_qty, 0) - coalesce(qty_received, 0); 15 | """ 16 | ) 17 | -------------------------------------------------------------------------------- /purchase_manual_delivery/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import product_product 2 | from . import res_company 3 | from . import res_config 4 | from . import purchase_order 5 | from . import purchase_order_line 6 | -------------------------------------------------------------------------------- /purchase_manual_delivery/models/res_company.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 ForgeFlow S.L. 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | from odoo import fields, models 4 | 5 | 6 | class ResCompany(models.Model): 7 | _inherit = "res.company" 8 | 9 | purchase_manual_delivery = fields.Boolean( 10 | string="Purchase manual delivery?", required=False 11 | ) 12 | -------------------------------------------------------------------------------- /purchase_manual_delivery/models/res_config.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 ForgeFlow S.L. 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | from odoo import fields, models 4 | 5 | 6 | class ResConfigSettings(models.TransientModel): 7 | _inherit = "res.config.settings" 8 | 9 | purchase_manual_delivery = fields.Boolean( 10 | related="company_id.purchase_manual_delivery", readonly=False 11 | ) 12 | -------------------------------------------------------------------------------- /purchase_manual_delivery/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_manual_delivery/readme/CONFIGURE.md: -------------------------------------------------------------------------------- 1 | The `Manual delivery` checkbox can be edited on any RFQ, on the `Other Information` 2 | tab. To set the default value for new POs, go to Settings -> Purchase -> Delivery. 3 | -------------------------------------------------------------------------------- /purchase_manual_delivery/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Adria Gil Sorribes \<\> 2 | - Stefan Rijnhart \<\> 3 | -------------------------------------------------------------------------------- /purchase_manual_delivery/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | The goal of this module is to allow the manual creation of incoming 2 | shipments. When installed, a purchase order won't impact directly the 3 | stock. It will not create the pickings upon order confirmation. It 4 | allows the reception and the impact on stock to be done manually when 5 | needed. The goal is to be used when a supplier does not confirm the full 6 | order at once. As the supplier confirms the different purchase order 7 | lines, the user can manually create the incoming shipments for those 8 | specific lines. 9 | -------------------------------------------------------------------------------- /purchase_manual_delivery/report/__init__.py: -------------------------------------------------------------------------------- 1 | from . import stock_forecasted 2 | -------------------------------------------------------------------------------- /purchase_manual_delivery/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | create_stock_picking_wizard_all,create_stock_picking_wizard_all,model_create_stock_picking_wizard,stock.group_stock_user,1,1,1,1 3 | create_stock_picking_wizard_line_all,create_stock_picking_wizard_line_all,model_create_stock_picking_wizard_line,stock.group_stock_user,1,1,1,1 4 | -------------------------------------------------------------------------------- /purchase_manual_delivery/static/description/create_incoming_shipment_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_manual_delivery/static/description/create_incoming_shipment_button.png -------------------------------------------------------------------------------- /purchase_manual_delivery/static/description/create_incoming_shipment_wizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_manual_delivery/static/description/create_incoming_shipment_wizard.png -------------------------------------------------------------------------------- /purchase_manual_delivery/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_manual_delivery/static/description/icon.png -------------------------------------------------------------------------------- /purchase_manual_delivery/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_manual_delivery 2 | from . import test_report_forecast 3 | -------------------------------------------------------------------------------- /purchase_manual_delivery/wizard/__init__.py: -------------------------------------------------------------------------------- 1 | from . import create_manual_stock_picking 2 | -------------------------------------------------------------------------------- /purchase_open_qty/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 2 | 3 | from . import models 4 | from .init_hook import pre_init_hook 5 | -------------------------------------------------------------------------------- /purchase_open_qty/models/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 2 | 3 | from . import purchase_order 4 | from . import purchase_order_line 5 | -------------------------------------------------------------------------------- /purchase_open_qty/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_open_qty/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Miquel Raïch \<\> 2 | - Andreas Dian Sukarno Putro \<\> 3 | - Kitti Upariphutthiphong \<\> 4 | - Eric Antones \<\> 5 | - Juany Davila \<\> 6 | - [Tecnativa](https://www.tecnativa.com): 7 | - Carlos Roca 8 | - `Trobz `_: 9 | 10 | * Son Ho 11 | -------------------------------------------------------------------------------- /purchase_open_qty/readme/CREDITS.md: -------------------------------------------------------------------------------- 1 | The migration of this module from 16.0 to 17.0 was financially supported by Camptocamp 2 | -------------------------------------------------------------------------------- /purchase_open_qty/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module allows purchase users to identify what are the purchase 2 | orders that currently have quantities pending to invoice or to receive. 3 | -------------------------------------------------------------------------------- /purchase_open_qty/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To use this module, you need to go to Purchase Orders and select the new 2 | filters in the search. 3 | -------------------------------------------------------------------------------- /purchase_open_qty/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_open_qty/static/description/icon.png -------------------------------------------------------------------------------- /purchase_open_qty/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 2 | 3 | from . import test_purchase_open_qty 4 | -------------------------------------------------------------------------------- /purchase_order_archive/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | 3 | from . import models 4 | -------------------------------------------------------------------------------- /purchase_order_archive/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017-2020 Onestein () 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | 4 | { 5 | "name": "Purchase Order Archive", 6 | "summary": "Archive Purchase Orders", 7 | "author": "Onestein, Odoo Community Association (OCA)", 8 | "website": "https://github.com/OCA/purchase-workflow", 9 | "category": "Purchases", 10 | "version": "18.0.1.0.0", 11 | "license": "AGPL-3", 12 | "depends": ["purchase"], 13 | "data": ["views/purchase_order.xml"], 14 | "installable": True, 15 | } 16 | -------------------------------------------------------------------------------- /purchase_order_archive/models/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | 3 | from . import purchase_order 4 | -------------------------------------------------------------------------------- /purchase_order_archive/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_order_archive/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Andrea Stirpe \<\> 2 | - Christihan Laurel \<\> 3 | - [Binhex](https://binhex.cloud/): 4 | - Mario Luis \<\> 5 | - `Heliconia Solutions Pvt. Ltd. `_ 6 | -------------------------------------------------------------------------------- /purchase_order_archive/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | On a system with a high volume of purchases, the number of purchase 2 | orders displayed in the list view can become huge. This module allows to 3 | archive Purchase Orders that are in status Locked or Cancelled. 4 | 5 | If a purchase order is archived, it will be hidden from the purchase 6 | orders list view. 7 | 8 | This module only depends on module purchase, but it could be used in 9 | combination with OCA module 'record_archiver' in order to automatically 10 | archive old purchase orders. 11 | -------------------------------------------------------------------------------- /purchase_order_archive/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To archive purchase orders, you need to: 2 | 3 | 1. Open the tree view of purchase orders. 4 | 2. Select a purchase order (in status Locked or Cancelled) you want to 5 | archive. 6 | 3. Click on Action \> Archive. Confirm. 7 | 4. The purchase order is now archived. 8 | 9 | To unarchive purchase orders, you need to: 10 | 11 | 1. Open the tree view of purchase orders. 12 | 2. In the filter box select the Archived filter. The list of archived 13 | purchase orders will be displayed. 14 | 3. Select the purchase order (in status Locked or Cancelled) you want 15 | to restore to Active. 16 | 4. Click on Action \> Unarchive. 17 | 5. The purchase order is now active. 18 | -------------------------------------------------------------------------------- /purchase_order_archive/setup/purchase_order_archive/odoo/addons/purchase_order_archive: -------------------------------------------------------------------------------- 1 | ../../../../purchase_order_archive 2 | -------------------------------------------------------------------------------- /purchase_order_archive/setup/purchase_order_archive/setup.py: -------------------------------------------------------------------------------- 1 | import setuptools 2 | 3 | setuptools.setup( 4 | setup_requires=["setuptools-odoo"], 5 | odoo_addon=True, 6 | ) 7 | -------------------------------------------------------------------------------- /purchase_order_archive/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_order_archive/static/description/icon.png -------------------------------------------------------------------------------- /purchase_order_archive/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 2 | 3 | from . import test_purchase_order_archive 4 | -------------------------------------------------------------------------------- /purchase_order_general_discount/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_order_general_discount/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Tecnativa - David Vidal 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | { 4 | "name": "Purchase Order General Discount", 5 | "summary": "General discount per purchase order", 6 | "version": "18.0.1.0.0", 7 | "category": "Purchases", 8 | "website": "https://github.com/OCA/purchase-workflow", 9 | "author": "Tecnativa, Odoo Community Association (OCA)", 10 | "license": "AGPL-3", 11 | "application": False, 12 | "installable": True, 13 | "depends": ["purchase"], 14 | "data": [ 15 | "views/purchase_order_view.xml", 16 | "views/res_partner_view.xml", 17 | "views/res_config_view.xml", 18 | ], 19 | } 20 | -------------------------------------------------------------------------------- /purchase_order_general_discount/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_order 2 | from . import res_company 3 | from . import res_config_settings 4 | from . import res_partner 5 | -------------------------------------------------------------------------------- /purchase_order_general_discount/models/res_config_settings.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Tecnativa - David Vidal 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | from odoo import fields, models 4 | 5 | 6 | class ResConfigSettings(models.TransientModel): 7 | _inherit = "res.config.settings" 8 | 9 | purchase_general_discount_field = fields.Selection( 10 | related="company_id.purchase_general_discount_field", 11 | readonly=False, 12 | ) 13 | -------------------------------------------------------------------------------- /purchase_order_general_discount/models/res_partner.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Tecnativa - David Vidal 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ResPartner(models.Model): 8 | _inherit = "res.partner" 9 | 10 | purchase_general_discount = fields.Float( 11 | digits="Discount", 12 | string="Purchase General Discount (%)", 13 | company_dependent=True, 14 | ) 15 | -------------------------------------------------------------------------------- /purchase_order_general_discount/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_order_general_discount/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - [Tecnativa](https://www.tecnativa.com): 2 | 3 | > - David Vidal 4 | > - Pedro M. Baeza 5 | > - Rafael Blasco 6 | > - Carlos Roca 7 | > - Pilar Vargas 8 | 9 | - [Aures TIC](https://www.aurestic.es): 10 | 11 | > - Jose Zambudio 12 | > - Anna Martinez 13 | 14 | - [Komit](https://komit-consulting.com): 15 | 16 | - Cuong Nguyen Mtm \<\> 17 | -------------------------------------------------------------------------------- /purchase_order_general_discount/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module allows to set a general discount in a purchase order. This 2 | general discount is applied to each line order. 3 | 4 | You can also set a default general discount on suppliers and configure 5 | to which line field the discount will be applied. 6 | -------------------------------------------------------------------------------- /purchase_order_general_discount/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To set a partner default general discount you need to: 2 | 3 | 1. Go to a partner and set the general discount in *Sales & Purchases* 4 | tab. 5 | 6 | To set a general discount in a purchase order you need to: 7 | 8 | 1. Create a purchase order. 9 | 2. Either select a partner with a purchase general discount defined or 10 | set one in the summary section of the order. 11 | 3. This discount will be applied to every line. 12 | -------------------------------------------------------------------------------- /purchase_order_general_discount/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_order_general_discount/static/description/icon.png -------------------------------------------------------------------------------- /purchase_order_general_discount/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_order_general_discount 2 | -------------------------------------------------------------------------------- /purchase_order_line_menu/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2021 Open Source Integrators 2 | # Copyright (C) 2023 Moduon Team 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | from . import models 5 | -------------------------------------------------------------------------------- /purchase_order_line_menu/models/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2023 Moduon Team 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | from . import purchase_order_line 4 | -------------------------------------------------------------------------------- /purchase_order_line_menu/models/purchase_order_line.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Moduon Team 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | from odoo import fields, models 4 | 5 | 6 | class PurchaseOrderLine(models.Model): 7 | _inherit = "purchase.order.line" 8 | 9 | invoice_status = fields.Selection( 10 | related="order_id.invoice_status", 11 | readonly=True, 12 | store=True, 13 | index=True, 14 | ) 15 | date_order = fields.Datetime( 16 | store=True, 17 | index=True, 18 | ) 19 | -------------------------------------------------------------------------------- /purchase_order_line_menu/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_order_line_menu/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - \`Open Source Integrators \<\>\`: 2 | - Daniel Reis \<\> 3 | - Freni Patel \<\> 4 | - Murtaza Mithaiwala \<\> 5 | - \`Moduon Team \<\>\`: 6 | - Eduardo de Miguel \<\> 7 | - Emilio Pascual \<\> 8 | - Rafael Blasco \<\> 9 | -------------------------------------------------------------------------------- /purchase_order_line_menu/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | Adds a menu item and some views to navigate through Purchase Order 2 | lines. 3 | -------------------------------------------------------------------------------- /purchase_order_line_menu/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | Menu option available at Purchase \> Orders \> Purchase Order Lines. 2 | -------------------------------------------------------------------------------- /purchase_order_line_menu/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_order_line_menu/static/description/icon.png -------------------------------------------------------------------------------- /purchase_order_line_sequence/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 2 | 3 | from . import models 4 | -------------------------------------------------------------------------------- /purchase_order_line_sequence/models/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 2 | 3 | from . import purchase 4 | from . import purchase_line 5 | from . import account_move_line 6 | from . import stock_move 7 | -------------------------------------------------------------------------------- /purchase_order_line_sequence/models/stock_move.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Forgeflow S.L. 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 3 | 4 | from odoo import api, models 5 | from odoo.exceptions import UserError 6 | 7 | 8 | class StockMove(models.Model): 9 | _inherit = "stock.move" 10 | 11 | @api.onchange("sequence") 12 | def _onchange_sequence(self): 13 | if self.purchase_line_id: 14 | raise UserError( 15 | self.env._( 16 | "Not allowed to change the sequence of moves from the picking, " 17 | "you can do it from the PO." 18 | ) 19 | ) 20 | -------------------------------------------------------------------------------- /purchase_order_line_sequence/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_order_line_sequence/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Cécile Jallais \<\> 2 | - Damien Crier \<\> 3 | - ForgeFlow S.L. \<\> 4 | - Serpent Consulting Services Pvt. Ltd. \<\> 5 | -------------------------------------------------------------------------------- /purchase_order_line_sequence/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | The sequence in PO line is propagated to the Stock moves. The sequence 2 | number appears in the PO form view and in the report. 3 | -------------------------------------------------------------------------------- /purchase_order_line_sequence/readme/ROADMAP.md: -------------------------------------------------------------------------------- 1 | In standard odoo is possible to sort the purchase order lines and those 2 | are propagated to the invoice lines 3 | -------------------------------------------------------------------------------- /purchase_order_line_sequence/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | This module depends on the following module(s) : 2 | - stock_picking_line_sequence 3 | () 4 | -------------------------------------------------------------------------------- /purchase_order_line_sequence/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_order_line_sequence/static/description/icon.png -------------------------------------------------------------------------------- /purchase_order_line_sequence/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 2 | 3 | from . import test_po_lines_sequence 4 | -------------------------------------------------------------------------------- /purchase_order_line_sequence/views/report_purchaseorder.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | -------------------------------------------------------------------------------- /purchase_order_line_sequence/views/report_purchasequotation.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | -------------------------------------------------------------------------------- /purchase_order_line_stock_available/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_order_line_stock_available/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2015 AvanzOSC 2 | # Copyright 2017-2019 Tecnativa - Pedro M. Baeza 3 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 4 | { 5 | "name": "Purchase order line stock available", 6 | "version": "18.0.1.0.0", 7 | "license": "AGPL-3", 8 | "author": "AvanzOSC," "Tecnativa," "Odoo Community Association (OCA)", 9 | "website": "https://github.com/OCA/purchase-workflow", 10 | "depends": ["purchase_stock"], 11 | "category": "Purchases", 12 | "data": ["views/purchase_view.xml"], 13 | "installable": True, 14 | } 15 | -------------------------------------------------------------------------------- /purchase_order_line_stock_available/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase 2 | -------------------------------------------------------------------------------- /purchase_order_line_stock_available/models/purchase.py: -------------------------------------------------------------------------------- 1 | from odoo import fields, models 2 | 3 | 4 | class PurchaseOrderLine(models.Model): 5 | _inherit = "purchase.order.line" 6 | 7 | virtual_available = fields.Float( 8 | related="product_id.virtual_available", readonly=True 9 | ) 10 | -------------------------------------------------------------------------------- /purchase_order_line_stock_available/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_order_line_stock_available/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - [AvanzOSC](http://www.avanzosc.es/): 2 | - Daniel Campos \<\> 3 | - Ana Juaristi \<\> 4 | - [Tecnativa](https://www.tecnativa.com): 5 | - Pedro Baeza 6 | - Vicent Cubells 7 | - Víctor Martínez 8 | - Sudhir Arya \<\> 9 | -------------------------------------------------------------------------------- /purchase_order_line_stock_available/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module allows to view the virtual stock quantity of a product in 2 | the purchase order line. 3 | -------------------------------------------------------------------------------- /purchase_order_line_stock_available/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | - Create a new purchase order and now you will see available stock of 2 | product on every purchase line. 3 | -------------------------------------------------------------------------------- /purchase_order_line_stock_available/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_order_line_stock_available/static/description/icon.png -------------------------------------------------------------------------------- /purchase_order_line_stock_available/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase 2 | -------------------------------------------------------------------------------- /purchase_order_line_stock_available/views/purchase_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | purchase.order.form.view.stock 5 | purchase.order 6 | 7 | 8 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /purchase_order_qty_change_no_recompute/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | 3 | from . import monkeypatching 4 | -------------------------------------------------------------------------------- /purchase_order_qty_change_no_recompute/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021 Tecnativa - Víctor Martínez 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | { 4 | "name": "Purchase Order Qty change no recompute", 5 | "summary": "Prevent recompute if only quantity has changed in purchase order line", 6 | "version": "18.0.1.0.0", 7 | "category": "Purchases", 8 | "website": "https://github.com/OCA/purchase-workflow", 9 | "author": "Tecnativa, Odoo Community Association (OCA)", 10 | "license": "AGPL-3", 11 | "installable": True, 12 | "depends": ["purchase"], 13 | "maintainers": ["victoralmau"], 14 | } 15 | -------------------------------------------------------------------------------- /purchase_order_qty_change_no_recompute/i18n/es.po: -------------------------------------------------------------------------------- 1 | # Translation of Odoo Server. 2 | # This file contains the translation of the following modules: 3 | # * purchase_order_qty_change_no_recompute 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: Odoo Server 15.0\n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "PO-Revision-Date: 2023-07-13 10:09+0000\n" 10 | "Last-Translator: Ivorra78 \n" 11 | "Language-Team: none\n" 12 | "Language: es\n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=UTF-8\n" 15 | "Content-Transfer-Encoding: \n" 16 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 17 | "X-Generator: Weblate 4.17\n" 18 | 19 | #~ msgid "Purchase Order Line" 20 | #~ msgstr "Línea de pedido de compra" 21 | -------------------------------------------------------------------------------- /purchase_order_qty_change_no_recompute/i18n/it.po: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_order_qty_change_no_recompute/i18n/it.po -------------------------------------------------------------------------------- /purchase_order_qty_change_no_recompute/i18n/purchase_order_qty_change_no_recompute.pot: -------------------------------------------------------------------------------- 1 | # Translation of Odoo Server. 2 | # This file contains the translation of the following modules: 3 | # 4 | msgid "" 5 | msgstr "" 6 | "Project-Id-Version: Odoo Server 18.0\n" 7 | "Report-Msgid-Bugs-To: \n" 8 | "Last-Translator: \n" 9 | "Language-Team: \n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: \n" 13 | "Plural-Forms: \n" 14 | -------------------------------------------------------------------------------- /purchase_order_qty_change_no_recompute/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_order_qty_change_no_recompute/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - [Tecnativa](https://www.tecnativa.com): 2 | - Víctor Martínez 3 | - Pedro M. Baeza 4 | - César A. Sánchez 5 | - Maciej Wichowski \<\> 6 | -------------------------------------------------------------------------------- /purchase_order_qty_change_no_recompute/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module prevents to recompute if only quantity has changed in 2 | purchase order line. 3 | -------------------------------------------------------------------------------- /purchase_order_qty_change_no_recompute/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To use this module, you need to: 2 | 3 | 1. Create a new purchase order. 4 | 2. Add product line and set custom unit price. 5 | 3. Save purchase order. 6 | 4. Edit purchase order and change quantity (custom unit price not been 7 | reset). 8 | -------------------------------------------------------------------------------- /purchase_order_qty_change_no_recompute/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_order_qty_change_no_recompute/static/description/icon.png -------------------------------------------------------------------------------- /purchase_order_qty_change_no_recompute/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 2 | from . import test_purchase_order_qty_change 3 | -------------------------------------------------------------------------------- /purchase_order_secondary_unit/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | from . import models 3 | -------------------------------------------------------------------------------- /purchase_order_secondary_unit/models/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | from . import product_product 3 | from . import product_template 4 | from . import purchase_order 5 | -------------------------------------------------------------------------------- /purchase_order_secondary_unit/models/product_template.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018 Tecnativa - Sergio Teruel 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | from odoo import fields, models 4 | 5 | 6 | class ProductTemplate(models.Model): 7 | _inherit = "product.template" 8 | 9 | purchase_secondary_uom_id = fields.Many2one( 10 | comodel_name="product.secondary.unit", 11 | string="Default secondary unit for purchases", 12 | domain="[('product_tmpl_id', '=', id), ('product_id', '=', False)]", 13 | ) 14 | -------------------------------------------------------------------------------- /purchase_order_secondary_unit/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_order_secondary_unit/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - [Tecnativa](https://www.tecnativa.com): 2 | - Sergio Teruel 3 | - Ernesto Tejeda 4 | - Nikul Chaudhary \<\> 5 | - Pimolnat Suntian \<\> 6 | - Miguel Ángel Gómez \<\> 7 | -------------------------------------------------------------------------------- /purchase_order_secondary_unit/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module extends the functionality of purchase orders to allow buy 2 | products in secondary unit of distinct category. 3 | -------------------------------------------------------------------------------- /purchase_order_secondary_unit/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To use this module you need to: 2 | 3 | 1. Go to a *Product \> General Information tab*. 4 | 2. Create any record in "Secondary unit of measure". 5 | 3. Set the conversion factor. 6 | 4. Go to *Purchase \> Quotation \> Create*. 7 | 5. Change secondary qty and secondary uom in line, and quantity 8 | (product_qty) will be changed (according to the conversion factor). 9 | -------------------------------------------------------------------------------- /purchase_order_secondary_unit/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_order_secondary_unit/static/description/icon.png -------------------------------------------------------------------------------- /purchase_order_secondary_unit/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | from . import test_purchase_order_secondary_unit 3 | -------------------------------------------------------------------------------- /purchase_order_supplierinfo_update/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_order_supplierinfo_update/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021 Tecnativa - Ernesto Tejeda 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | { 4 | "name": "Purchase Order Supplierinfo Update", 5 | "summary": "Update product supplierinfo with the last purchase price", 6 | "version": "18.0.1.0.1", 7 | "category": "Purchase", 8 | "website": "https://github.com/OCA/purchase-workflow", 9 | "author": "Tecnativa, Odoo Community Association (OCA)", 10 | "maintainers": ["ernestotejeda"], 11 | "license": "AGPL-3", 12 | "depends": ["purchase"], 13 | } 14 | -------------------------------------------------------------------------------- /purchase_order_supplierinfo_update/models/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | from . import purchase_order 3 | -------------------------------------------------------------------------------- /purchase_order_supplierinfo_update/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_order_supplierinfo_update/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - [Tecnativa](https://www.tecnativa.com): 2 | - Ernesto Tejeda 3 | - Carlos Dauden 4 | - Daniel Reis \<\>, [Open Source 5 | Integrators](https://www.opensourceintegrators.eu): 6 | -------------------------------------------------------------------------------- /purchase_order_supplierinfo_update/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module extends the functionality of purchase to allow the price and the discount of 2 | the supplier-info to be updated automatically for each product of the 3 | purchase when it is confirmed. This will allow that when a purchase 4 | order is created, the suggested price and suggested discount for those products is the last one 5 | purchased. 6 | -------------------------------------------------------------------------------- /purchase_order_supplierinfo_update/readme/ROADMAP.md: -------------------------------------------------------------------------------- 1 | - Refactor that module to share algorithm with similar module 2 | account_invoice_supplierinfo_update. 3 | -------------------------------------------------------------------------------- /purchase_order_supplierinfo_update/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_order_supplierinfo_update/static/description/icon.png -------------------------------------------------------------------------------- /purchase_order_supplierinfo_update/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | from . import test_purchase_order_supplierinfo_update 3 | -------------------------------------------------------------------------------- /purchase_order_type/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_order_type/data/purchase_order_type.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Regular 5 | 5 6 | 7 | 8 | Blanket 9 | 10 | 11 | Contract 12 | 13 | 14 | Planned 15 | 16 | 17 | -------------------------------------------------------------------------------- /purchase_order_type/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_order_type 2 | from . import purchase_order 3 | from . import res_partner 4 | -------------------------------------------------------------------------------- /purchase_order_type/models/res_partner.py: -------------------------------------------------------------------------------- 1 | # Copyright 2015 Camptocamp SA 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ResPartner(models.Model): 8 | _inherit = "res.partner" 9 | 10 | purchase_type = fields.Many2one( 11 | comodel_name="purchase.order.type", string="Purchase Order Type" 12 | ) 13 | -------------------------------------------------------------------------------- /purchase_order_type/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_order_type/readme/CONFIGURE.md: -------------------------------------------------------------------------------- 1 | To configure this module, you need to: 2 | 3 | - Go to **Purchases \> Configuration \> Purchase types** 4 | - Modify / create the purchase order types 5 | -------------------------------------------------------------------------------- /purchase_order_type/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Guewen Baconnier \<\> 2 | - Pimolnat Suntian \<\> 3 | - Roger Sans \<\> 4 | -------------------------------------------------------------------------------- /purchase_order_type/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | Adds a configurable *type* on the purchase orders. This type can be used 2 | in filters and groupbys. 3 | -------------------------------------------------------------------------------- /purchase_order_type/readme/ROADMAP.md: -------------------------------------------------------------------------------- 1 | - Suggestion: add a default configuration attached to the types 2 | -------------------------------------------------------------------------------- /purchase_order_type/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To use this module, you need to: 2 | 3 | - Attribute a type when editing purchase orders 4 | -------------------------------------------------------------------------------- /purchase_order_type/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | access_purchase_order_type,purchase.order.type,model_purchase_order_type,purchase.group_purchase_user,1,0,0,0 3 | access_purchase_order_type_manager,purchase.order.type manager,model_purchase_order_type,purchase.group_purchase_manager,1,1,1,1 4 | -------------------------------------------------------------------------------- /purchase_order_type/security/security.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Purchase Order Type multi-company 4 | 5 | 6 | ['|', ('company_id','=',False), ('company_id','in',company_ids)] 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /purchase_order_type/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_order_type/static/description/icon.png -------------------------------------------------------------------------------- /purchase_order_type/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Oihane Crucelaegui - AvanzOSC 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 3 | 4 | from . import test_purchase_order_type 5 | -------------------------------------------------------------------------------- /purchase_order_type_dashboard/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_order_type_dashboard/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_order_type 2 | -------------------------------------------------------------------------------- /purchase_order_type_dashboard/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_order_type_dashboard/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - David Alonso \<\> 2 | - Angel Rivas \<\> 3 | - [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) 4 | - Bhavesh Heliconia 5 | 6 | -------------------------------------------------------------------------------- /purchase_order_type_dashboard/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | Adds a dashboard for Purchase Orders based on Purchase Order Types. 2 | -------------------------------------------------------------------------------- /purchase_order_type_dashboard/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_order_type_dashboard/static/description/icon.png -------------------------------------------------------------------------------- /purchase_order_type_dashboard/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_order_type_dashboard 2 | -------------------------------------------------------------------------------- /purchase_order_type_dashboard/views/menu_purchase_order.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Dashboard 5 | purchase-dashboard 6 | purchase.order.type 7 | kanban,list,form,pivot 8 | 9 | 10 | 17 | 18 | -------------------------------------------------------------------------------- /purchase_order_uninvoiced_amount/__init__.py: -------------------------------------------------------------------------------- 1 | # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). 2 | 3 | from . import models 4 | -------------------------------------------------------------------------------- /purchase_order_uninvoiced_amount/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Tecnativa - Manuel Calero 2 | # Copyright 2020 Tecnativa - João Marques 3 | # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). 4 | 5 | { 6 | "name": "Purchase Order Univoiced Amount", 7 | "author": "Tecnativa, Odoo Community Association (OCA)", 8 | "version": "18.0.1.0.0", 9 | "development_status": "Production/Stable", 10 | "website": "https://github.com/OCA/purchase-workflow", 11 | "category": "Purchase", 12 | "license": "AGPL-3", 13 | "application": False, 14 | "installable": True, 15 | "depends": ["purchase"], 16 | "data": ["views/purchase_order_view.xml"], 17 | } 18 | -------------------------------------------------------------------------------- /purchase_order_uninvoiced_amount/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_order 2 | -------------------------------------------------------------------------------- /purchase_order_uninvoiced_amount/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_order_uninvoiced_amount/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - [Tecnativa](https://www.tecnativa.com): 2 | - Manuel Calero 3 | - João Marques 4 | - Pedro M. Baeza 5 | - Ernesto Tejeda 6 | - Víctor Martínez 7 | - Juan Carlos Oñate 8 | -------------------------------------------------------------------------------- /purchase_order_uninvoiced_amount/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | Show uninvoiced amount on purchase order tree. 2 | -------------------------------------------------------------------------------- /purchase_order_uninvoiced_amount/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_order_uninvoiced_amount/static/description/icon.png -------------------------------------------------------------------------------- /purchase_order_uninvoiced_amount/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). 2 | 3 | from . import test_purchase_order_uninvoiced_amount 4 | -------------------------------------------------------------------------------- /purchase_partner_incoterm/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_partner_incoterm/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_order 2 | from . import res_partner 3 | -------------------------------------------------------------------------------- /purchase_partner_incoterm/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_partner_incoterm/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - [Camptocamp](https://www.camptocamp.com): 2 | - Thierry Ducrest \<\> 3 | - Denis Leemann \<\> 4 | 5 | - [Trobz](https://trobz.com): 6 | - Son Ho \<\> 7 | - Chau Le \<\> 8 | - Nhan Tran \<\> 9 | 10 | - [Akretion](https://akretion.com): 11 | - David BEAL \<\> 12 | - Raphaël Reverdy \<\> 13 | 14 | - [InitOS](https://www.initos.com): 15 | - Dhara Solanki \<\> 16 | 17 | - Manish Kumar Bohra 18 | -------------------------------------------------------------------------------- /purchase_partner_incoterm/readme/CREDITS.md: -------------------------------------------------------------------------------- 1 | **Financial support** 2 | - Cosanum 3 | - Camptocamp R&D 4 | -------------------------------------------------------------------------------- /purchase_partner_incoterm/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module adds incoterms for suppliers and purchase order: 2 | 3 | - incoterm modes 4 | - incoterm address 5 | 6 | Based on Partner/Supplier It will add Incoterm address. 7 | -------------------------------------------------------------------------------- /purchase_partner_incoterm/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_partner_incoterm/static/description/icon.png -------------------------------------------------------------------------------- /purchase_partner_incoterm/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_partner_incoterm 2 | -------------------------------------------------------------------------------- /purchase_partner_incoterm/views/partner_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | res.partner.purchase.form.inherit 5 | res.partner 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /purchase_partner_incoterm/views/purchase_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | purchase.order 5 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /purchase_partner_selectable_option/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 2 | 3 | from . import models 4 | -------------------------------------------------------------------------------- /purchase_partner_selectable_option/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021 Tecnativa - Víctor Martínez 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | { 4 | "name": "Purchase Partner Selectable Option", 5 | "version": "18.0.1.0.0", 6 | "category": "Purchase", 7 | "website": "https://github.com/OCA/purchase-workflow", 8 | "author": "Tecnativa, Odoo Community Association (OCA)", 9 | "license": "AGPL-3", 10 | "depends": ["purchase"], 11 | "data": ["data/ir_config_parameter.xml", "views/res_partner_view.xml"], 12 | "installable": True, 13 | "maintainers": ["victoralmau"], 14 | } 15 | -------------------------------------------------------------------------------- /purchase_partner_selectable_option/data/ir_config_parameter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | purchase_partner_selectable_option.default_purchase_selectable 8 | 1 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /purchase_partner_selectable_option/models/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 2 | 3 | from . import res_partner 4 | from . import purchase_order 5 | -------------------------------------------------------------------------------- /purchase_partner_selectable_option/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_partner_selectable_option/readme/CONFIGURE.md: -------------------------------------------------------------------------------- 1 | To configure this module, you need to: 2 | 3 | 1. Go to **Contacts \> Contacts** 4 | 2. Create a record and uncheck the "Selectable in purchase orders" box 5 | on the Purchase part of the "Sales & Purchases" tab. 6 | 7 | The "Selectable in purchase orders" field is set to True by default. To 8 | change this default to False, adjust the system parameter 9 | 'purchase_partner_selectable_option.default_purchase_selectable' by 10 | setting it to "0". 11 | -------------------------------------------------------------------------------- /purchase_partner_selectable_option/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - [Tecnativa](https://www.tecnativa.com): 2 | - Víctor Martínez 3 | - Pedro M. Baeza 4 | - César A. Sánchez 5 | - Juan Carlos Oñate 6 | -------------------------------------------------------------------------------- /purchase_partner_selectable_option/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module limits the partners to be selected in the purchases orders 2 | according to the "Selectable in orders" field. 3 | -------------------------------------------------------------------------------- /purchase_partner_selectable_option/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To use this module, you need to: 2 | 3 | 1. Go to **Purchase \> Orders \> Request for Quotations** 4 | 2. Create a record and the previously created partner will not appear 5 | in the Vendor field. 6 | -------------------------------------------------------------------------------- /purchase_partner_selectable_option/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_partner_selectable_option/static/description/icon.png -------------------------------------------------------------------------------- /purchase_partner_selectable_option/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | 3 | from . import test_purchase_partner_selectable_option 4 | -------------------------------------------------------------------------------- /purchase_receipt_expectation/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Camptocamp SA 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | 4 | from . import models 5 | -------------------------------------------------------------------------------- /purchase_receipt_expectation/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Camptocamp SA 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | 4 | { 5 | "name": "Purchase Receipt Expectation", 6 | "version": "18.0.1.0.0", 7 | "category": "Purchase Management", 8 | "author": "Camptocamp SA, Odoo Community Association (OCA)", 9 | "website": "https://github.com/OCA/purchase-workflow", 10 | "license": "AGPL-3", 11 | "data": [ 12 | "views/purchase_order.xml", 13 | ], 14 | "depends": [ 15 | "purchase_stock", 16 | ], 17 | "installable": True, 18 | } 19 | -------------------------------------------------------------------------------- /purchase_receipt_expectation/models/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Camptocamp SA 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | 4 | from . import purchase_order 5 | -------------------------------------------------------------------------------- /purchase_receipt_expectation/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_receipt_expectation/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Silvio Gregorini \<\> 2 | - Dhara Solanki \<\> 3 | - Kevin Khao \<\> 4 | -------------------------------------------------------------------------------- /purchase_receipt_expectation/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module is used as base module for managing incoming picking 2 | creation on purchase orders. 3 | -------------------------------------------------------------------------------- /purchase_receipt_expectation/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_receipt_expectation/static/description/icon.png -------------------------------------------------------------------------------- /purchase_receipt_expectation/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Camptocamp SA 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | 4 | from . import test_purchase_receipt_expectation 5 | -------------------------------------------------------------------------------- /purchase_reception_notify/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | from .hooks import post_init_hook 3 | -------------------------------------------------------------------------------- /purchase_reception_notify/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019-2024 ForgeFlow S.L. 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0). 3 | 4 | { 5 | "name": "Purchase Reception Notify", 6 | "version": "18.0.1.0.1", 7 | "category": "Purchase Management", 8 | "author": "ForgeFlow, Odoo Community Association (OCA)", 9 | "website": "https://github.com/OCA/purchase-workflow", 10 | "license": "AGPL-3", 11 | "depends": ["purchase_stock"], 12 | "data": ["data/mail_data.xml"], 13 | "installable": True, 14 | "post_init_hook": "post_init_hook", 15 | } 16 | -------------------------------------------------------------------------------- /purchase_reception_notify/data/mail_data.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Purchase Receptions 5 | purchase.order 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /purchase_reception_notify/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import stock_picking 2 | -------------------------------------------------------------------------------- /purchase_reception_notify/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_reception_notify/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Aaron Henriquez \<\> 2 | - Jordi Ballester \<\> 3 | - `Heliconia Solutions Pvt. Ltd. `_ 4 | -------------------------------------------------------------------------------- /purchase_reception_notify/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module automatically notifies the employees following a purchase order 2 | as soon as the associated products have been received into stock. 3 | 4 | It also introduces a new message subtype specifically created for those 5 | notifications. This subtype is set to internal by default when 6 | subscribing. The old purchase orders will be updated to assign this new 7 | subtype to the existing followers, as long as they are still active 8 | employees. 9 | -------------------------------------------------------------------------------- /purchase_reception_notify/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | Integrated in the normal flow. 2 | 3 | Create a Purchase Order with at least one product with a specified quantity and confirm th purchase order 4 | to generate the corresponding incoming shipment. Once the purchase order is confirmed, 5 | go to Inventory -> Operations -> Receipts. Open the generated receipt and click on "Validate". 6 | The message will be automatically generated. 7 | -------------------------------------------------------------------------------- /purchase_reception_notify/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_reception_notify/static/description/icon.png -------------------------------------------------------------------------------- /purchase_reception_notify/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_reception_notify 2 | -------------------------------------------------------------------------------- /purchase_request/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | from . import wizard 3 | -------------------------------------------------------------------------------- /purchase_request/data/purchase_request_sequence.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | Purchase Request 7 | purchase.request 8 | PR 9 | 5 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /purchase_request/demo/purchase_request_demo.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /purchase_request/models/__init__.py: -------------------------------------------------------------------------------- 1 | # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0) 2 | 3 | from . import purchase_request_allocation 4 | from . import orderpoint 5 | from . import purchase_request 6 | from . import purchase_request_line 7 | from . import stock_rule 8 | from . import product_template 9 | from . import purchase_order 10 | from . import stock_move 11 | from . import stock_move_line 12 | -------------------------------------------------------------------------------- /purchase_request/models/product_template.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018-2019 ForgeFlow, S.L. 2 | # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0) 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ProductTemplate(models.Model): 8 | _inherit = "product.template" 9 | 10 | purchase_request = fields.Boolean( 11 | help="Check this box to generate Purchase Request instead of " 12 | "generating Requests For Quotation from procurement.", 13 | company_dependent=True, 14 | ) 15 | -------------------------------------------------------------------------------- /purchase_request/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_request/readme/CONFIGURE.md: -------------------------------------------------------------------------------- 1 | To configure the product follow this steps: 2 | 3 | 1. Go to a product form. 4 | 2. Go to *Inventory* tab. 5 | 3. Check the box *Purchase Request* along with the route *Buy* and *Replenish on Order (MTO)* 6 | 7 | Note that MTO route is archived by default, you should unarchive it first: 8 | - Go to Inventory > Configuration > Routes, in the Search dropdown menu, click *Archived* to show *Replenish on Order (MTO)* route and *Unarchive* it. 9 | 10 | With this configuration, whenever a procurement order is created and the 11 | supply rule selected is 'Buy' the application will create a Purchase 12 | Request instead of a Purchase Order. 13 | -------------------------------------------------------------------------------- /purchase_request/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Jordi Ballester Alomar \<\> 2 | - Jonathan Nemry \<\> 3 | - Aaron Henriquez \<\> 4 | - Adrien Peiffer \<\> 5 | - Lois Rilo \<\> 6 | - Héctor Villarreal \<\> 7 | - Ben Cai \<\> 8 | - Rattapong Chokmasermkul \<\> 9 | - Stefan Rijnhart \<\> 10 | - `Trobz `_: 11 | 12 | * Son Ho 13 | - [Komit Company Limited](https://komit-consulting.com/): 14 | - Quoc Pham Ngoc \<\> -------------------------------------------------------------------------------- /purchase_request/readme/CREDITS.md: -------------------------------------------------------------------------------- 1 | The development of this module has been financially supported by: 2 | 3 | [![Aleph Objects, Inc](https://upload.wikimedia.org/wikipedia/en/3/3b/Aleph_Objects_Logo.png)](https://www.alephobjects.com) 4 | 5 | ## Images 6 | 7 | - Enric Tobella (logo) 8 | -------------------------------------------------------------------------------- /purchase_request/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | Purchase requests are accessible through a new menu entry 'Purchase 2 | Requests', and also from the 'Purchase' menu. 3 | 4 | Users can access the list of Purchase Requests or Purchase Request 5 | Lines. 6 | 7 | It is possible to filter requests by its approval status. 8 | -------------------------------------------------------------------------------- /purchase_request/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_request/static/description/icon.png -------------------------------------------------------------------------------- /purchase_request/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0) 2 | 3 | from . import test_purchase_request_allocation 4 | from . import test_purchase_request_procurement 5 | from . import test_purchase_request_to_rfq 6 | from . import test_purchase_request 7 | -------------------------------------------------------------------------------- /purchase_request/views/product_template.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | product.template.form.inherit 7 | product.template 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /purchase_request/views/purchase_request_report.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | Purchase Request 7 | 8 | purchase.request 9 | qweb-pdf 10 | purchase_request.report_purchase_request 11 | purchase_request.report_purchase_request 12 | 13 | 14 | -------------------------------------------------------------------------------- /purchase_request/wizard/__init__.py: -------------------------------------------------------------------------------- 1 | # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0) 2 | 3 | from . import purchase_request_line_make_purchase_order 4 | -------------------------------------------------------------------------------- /purchase_request_department/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | from .hooks import post_init_hook 3 | -------------------------------------------------------------------------------- /purchase_request_department/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017-2020 Forgeflow S.L. 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | 4 | { 5 | "name": "Purchase Request Department", 6 | "author": "ForgeFlow, Odoo Community Association (OCA)", 7 | "version": "18.0.1.0.0", 8 | "website": "https://github.com/OCA/purchase-workflow", 9 | "category": "Purchase Management", 10 | "post_init_hook": "post_init_hook", 11 | "depends": ["hr", "purchase_request"], 12 | "data": ["views/purchase_request_department_view.xml"], 13 | "license": "AGPL-3", 14 | "installable": True, 15 | } 16 | -------------------------------------------------------------------------------- /purchase_request_department/hooks.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017-2020 Forgeflow S.L. 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | import logging 4 | 5 | _logger = logging.getLogger(__name__) 6 | 7 | 8 | def post_init_hook(env): 9 | """Loaded after installing the module.""" 10 | purchase_requests = env["purchase.request"].search([]) 11 | _logger.info( 12 | "Adding the department to %d purchase requests", len(purchase_requests) 13 | ) 14 | for purchase_request in purchase_requests: 15 | purchase_request.onchange_requested_by() 16 | -------------------------------------------------------------------------------- /purchase_request_department/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_request 2 | -------------------------------------------------------------------------------- /purchase_request_department/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_request_department/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Gisela Mora Comas \<\> 2 | - Héctor Villarreal \<\> 3 | -------------------------------------------------------------------------------- /purchase_request_department/readme/CREDITS.md: -------------------------------------------------------------------------------- 1 | The development of this module has been financially supported by: 2 | 3 | [![Aleph Objects, Inc](https://upload.wikimedia.org/wikipedia/en/3/3b/Aleph_Objects_Logo.png)](https://www.alephobjects.com) 4 | -------------------------------------------------------------------------------- /purchase_request_department/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module adds the user department in a new field in the purchase 2 | request form and allows to group by department on the tree view. 3 | -------------------------------------------------------------------------------- /purchase_request_department/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | When editing the 'purchase request' form and choosing the 'requested_by' 2 | field the requester's department will be automatically set. 3 | -------------------------------------------------------------------------------- /purchase_request_department/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_request_department/static/description/icon.png -------------------------------------------------------------------------------- /purchase_request_department/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_request_department 2 | -------------------------------------------------------------------------------- /purchase_request_exception/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models, wizard 2 | -------------------------------------------------------------------------------- /purchase_request_exception/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import exception_rule 2 | from . import purchase_request 3 | from . import purchase_request_line 4 | -------------------------------------------------------------------------------- /purchase_request_exception/models/exception_rule.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021 Ecosoft (http://ecosoft.co.th) 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ExceptionRule(models.Model): 8 | _inherit = "exception.rule" 9 | 10 | purchase_request_ids = fields.Many2many( 11 | comodel_name="purchase.request", 12 | string="Purchase Requests", 13 | ) 14 | model = fields.Selection( 15 | selection_add=[ 16 | ("purchase.request", "Purchase request"), 17 | ("purchase.request.line", "Purchase request line"), 18 | ], 19 | ondelete={"purchase.request": "cascade", "purchase.request.line": "cascade"}, 20 | ) 21 | -------------------------------------------------------------------------------- /purchase_request_exception/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_request_exception/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Kitti U \<\> 2 | -------------------------------------------------------------------------------- /purchase_request_exception/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module allows you attach several customizable exceptions to your 2 | purchase request in a way that you can filter requests by exceptions 3 | type and fix them. 4 | 5 | This is especially useful in an scenario for mass purchases requests 6 | import, because it's likely some orders have errors when you import them 7 | (like product not found in Odoo, wrong line format etc.) 8 | -------------------------------------------------------------------------------- /purchase_request_exception/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | access_purchase_request_exception_confirm,access_purchase_request_exception_confirm,model_purchase_request_exception_confirm,base.group_user,1,1,1,1 3 | -------------------------------------------------------------------------------- /purchase_request_exception/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_request_exception/static/description/icon.png -------------------------------------------------------------------------------- /purchase_request_exception/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_request_exception 2 | -------------------------------------------------------------------------------- /purchase_request_exception/wizard/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_request_exception_confirm 2 | -------------------------------------------------------------------------------- /purchase_request_exception/wizard/purchase_request_exception_confirm_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | Outstanding exceptions to manage 8 | ir.actions.act_window 9 | purchase.request.exception.confirm 10 | form 11 | 12 | new 13 | 14 | 15 | -------------------------------------------------------------------------------- /purchase_request_tier_validation/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | 3 | from . import models 4 | -------------------------------------------------------------------------------- /purchase_request_tier_validation/models/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | 3 | from . import purchase_request 4 | from . import tier_definition 5 | -------------------------------------------------------------------------------- /purchase_request_tier_validation/models/purchase_request.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019-2020 ForgeFlow S.L. 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | from odoo import api, models 4 | 5 | 6 | class PurchaseRequest(models.Model): 7 | _name = "purchase.request" 8 | _inherit = ["purchase.request", "tier.validation"] 9 | _state_from = ["draft"] 10 | _state_to = ["approved"] 11 | 12 | _tier_validation_manual_config = False 13 | 14 | @api.model 15 | def _get_under_validation_exceptions(self): 16 | res = super()._get_under_validation_exceptions() 17 | res.append("route_id") 18 | return res 19 | -------------------------------------------------------------------------------- /purchase_request_tier_validation/models/tier_definition.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019-2020 ForgeFlow S.L. 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | from odoo import api, models 4 | 5 | 6 | class TierDefinition(models.Model): 7 | _inherit = "tier.definition" 8 | 9 | @api.model 10 | def _get_tier_validation_model_names(self): 11 | res = super()._get_tier_validation_model_names() 12 | res.append("purchase.request") 13 | return res 14 | -------------------------------------------------------------------------------- /purchase_request_tier_validation/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_request_tier_validation/readme/CONFIGURE.md: -------------------------------------------------------------------------------- 1 | A default tier is created allowing Purchase Request Manager to approve 2 | Purchase Requests. 3 | 4 | In addition, you may want to add more tiers, so: 5 | 6 | 1. Go to *Settings \> Technical \> Tier Validations \> Tier 7 | Definition*. 8 | 2. Create as many tiers as you want for Purchase Order model. 9 | -------------------------------------------------------------------------------- /purchase_request_tier_validation/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Adria Gil \<\> 2 | - [Komit](https://komit-consulting.com): 3 | - Quan.nhm \<\> 4 | -------------------------------------------------------------------------------- /purchase_request_tier_validation/readme/CREDITS.md: -------------------------------------------------------------------------------- 1 | ## Images 2 | 3 | - Enric Tobella (logo) 4 | -------------------------------------------------------------------------------- /purchase_request_tier_validation/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module extends the functionality of Purchase Requests to support a 2 | tier validation process. 3 | -------------------------------------------------------------------------------- /purchase_request_tier_validation/readme/INSTALL.md: -------------------------------------------------------------------------------- 1 | This module depends on `base_tier_validation`. You can find it at 2 | [OCA/server-ux](https://github.com/OCA/server-ux) 3 | -------------------------------------------------------------------------------- /purchase_request_tier_validation/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To use this module, you need to: 2 | 3 | 1. Create a Purchase Request triggering at least one "Tier Definition". 4 | 2. Click on *Request Validation* button. 5 | 3. Under the tab *Reviews* have a look to pending reviews and their 6 | statuses. 7 | 4. Once all reviews are validated button to *Confirm* will be shown. 8 | 9 | Additional features: 10 | 11 | - You can filter the Purchase Request requesting your review through the 12 | filter *Needs my Review*. 13 | - User with rights to confirm the Purchase Request (validate all tiers 14 | that would be generated) can directly do the operation, this is, there 15 | is no need for her/him to request a validation. 16 | -------------------------------------------------------------------------------- /purchase_request_tier_validation/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_request_tier_validation/static/description/icon.png -------------------------------------------------------------------------------- /purchase_request_tier_validation/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_request_tier_validation 2 | -------------------------------------------------------------------------------- /purchase_request_type/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_request_type/demo/purchase_request_type.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Regular 5 | 5 6 | 7 | 8 | 9 | Contract 10 | 11 | 12 | 13 | Reduce Step 14 | 1 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /purchase_request_type/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_request_type 2 | from . import purchase_request 3 | -------------------------------------------------------------------------------- /purchase_request_type/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_request_type/readme/CONFIGURE.md: -------------------------------------------------------------------------------- 1 | To configure this module, you need to: 2 | 3 | - Go to **Purchases \> Configuration \> Purchase Request types** 4 | - Modify / create the purchase request types 5 | -------------------------------------------------------------------------------- /purchase_request_type/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Prapassorn Sornkaew \<\> 2 | -------------------------------------------------------------------------------- /purchase_request_type/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module adds the following functions: 2 | 3 | > - Adds a configurable *type* on the purchase requests. 4 | > - Choose reduce step not to create rfq. 5 | > - This type can be used in filters and groupbys. 6 | -------------------------------------------------------------------------------- /purchase_request_type/readme/ROADMAP.md: -------------------------------------------------------------------------------- 1 | - Suggestion: add a default configuration attached to the types 2 | -------------------------------------------------------------------------------- /purchase_request_type/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To use this module, you need to: 2 | 3 | - Attribute a type when editing purchase requests 4 | -------------------------------------------------------------------------------- /purchase_request_type/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | access_purchase_request_type,purchase.request.type,model_purchase_request_type,purchase_request.group_purchase_request_user,1,0,0,0 3 | access_purchase_request_type_manager,purchase.request.type manager,model_purchase_request_type,purchase_request.group_purchase_request_manager,1,1,1,1 4 | -------------------------------------------------------------------------------- /purchase_request_type/security/security.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Purchase Request Type multi-company 4 | 8 | [('company_id', 'in', company_ids + [False])] 9 | 10 | 11 | -------------------------------------------------------------------------------- /purchase_request_type/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_request_type/static/description/icon.png -------------------------------------------------------------------------------- /purchase_request_type/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021 ProThai Technology Co.,Ltd. (http://prothaitechnology.com) 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 3 | 4 | from . import test_purchase_request_type 5 | -------------------------------------------------------------------------------- /purchase_requisition_line_description/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_requisition_line_description/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_requisition_line 2 | -------------------------------------------------------------------------------- /purchase_requisition_line_description/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_requisition_line_description/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Anna Janiszewska \ 2 | -------------------------------------------------------------------------------- /purchase_requisition_line_description/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module allows to use product purchase description on the purchase 2 | requisition lines. 3 | -------------------------------------------------------------------------------- /purchase_requisition_line_description/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | 1. Add or modify a purchase description to any of your products. 2 | 2. Create a purchase agreement and add a purchase requisition line with 3 | this product and check out that now purchase requisition line 4 | description contains the description. 5 | -------------------------------------------------------------------------------- /purchase_requisition_line_description/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_requisition_line_description/static/description/icon.png -------------------------------------------------------------------------------- /purchase_requisition_line_description/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_requisition_line_description 2 | -------------------------------------------------------------------------------- /purchase_requisition_line_description/views/purchase_requisition.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | purchase_requisition_form 5 | purchase.requisition 6 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /purchase_sale_link_by_origin/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_sale_link_by_origin/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Camptocamp SA 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) 3 | { 4 | "name": "Purchase/Sale: link by origin", 5 | "summary": "Link PO/SO by the PO's Origin in addition to the default " 6 | "behavior that only links them by their lines", 7 | "version": "18.0.1.0.0", 8 | "author": "Camptocamp, Odoo Community Association (OCA)", 9 | "license": "AGPL-3", 10 | "category": "Purchase", 11 | "website": "https://github.com/OCA/purchase-workflow", 12 | "depends": [ 13 | "sale_purchase_stock", 14 | ], 15 | "data": [], 16 | "application": False, 17 | "installable": True, 18 | } 19 | -------------------------------------------------------------------------------- /purchase_sale_link_by_origin/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_order 2 | from . import sale_order 3 | -------------------------------------------------------------------------------- /purchase_sale_link_by_origin/models/sale_order.py: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Camptocamp SA 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) 3 | 4 | from odoo import api, models 5 | 6 | 7 | class SaleOrder(models.Model): 8 | _inherit = "sale.order" 9 | 10 | @api.depends("origin") 11 | def _compute_purchase_order_count(self): 12 | return super()._compute_purchase_order_count() 13 | 14 | def _get_purchase_orders(self): 15 | po_related = self.env["purchase.order"] 16 | for order in self: 17 | po_related |= self.env["purchase.order"].search( 18 | [("origin", "=", order.name)] 19 | ) 20 | return super()._get_purchase_orders() | po_related 21 | -------------------------------------------------------------------------------- /purchase_sale_link_by_origin/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_sale_link_by_origin/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Phuc (Kieu Hoang) \<\> 2 | -------------------------------------------------------------------------------- /purchase_sale_link_by_origin/readme/CREDITS.md: -------------------------------------------------------------------------------- 1 | The development of this module has been financially supported by: 2 | 3 | - Camptocamp 4 | -------------------------------------------------------------------------------- /purchase_sale_link_by_origin/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | By default since [Odoo 14.0](https://github.com/odoo/odoo/commit/5a1645a8f8f3560eb778da90b6160b322ce0722e), PO and SO are linked by their order lines. 2 | 3 | This module also link them by the PO's Origin field, to cover more cases. For example: 4 | - If a user cancels a PO, by default the link would have been broken; now it won't; 5 | - Or if a user manually defines or updates the Origin field of a PO, it will be taken into account. 6 | -------------------------------------------------------------------------------- /purchase_sale_link_by_origin/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_sale_link_by_origin/static/description/icon.png -------------------------------------------------------------------------------- /purchase_sale_link_by_origin/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_sale_purchase 2 | -------------------------------------------------------------------------------- /purchase_security/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_security/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import ir_rule 2 | from . import purchase_order 3 | from . import purchase_team 4 | from . import res_partner 5 | from . import res_users 6 | -------------------------------------------------------------------------------- /purchase_security/models/res_partner.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Tecnativa - Víctor Martínez 2 | # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ResPartner(models.Model): 8 | _inherit = "res.partner" 9 | 10 | purchase_user_id = fields.Many2one( 11 | comodel_name="res.users", 12 | domain="[('share', '=', False)]", 13 | string="Purchase representative", 14 | index=True, 15 | ) 16 | purchase_team_id = fields.Many2one( 17 | comodel_name="purchase.team", 18 | string="Purchase team", 19 | index=True, 20 | ) 21 | -------------------------------------------------------------------------------- /purchase_security/models/res_users.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Tecnativa - Víctor Martínez 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ResUsers(models.Model): 8 | _inherit = "res.users" 9 | 10 | purchase_team_ids = fields.Many2many( 11 | comodel_name="purchase.team", 12 | relation="purchase_team_res_users_rel", 13 | column1="res_users_id", 14 | column2="purchase_team_id", 15 | string="Purchases Teams", 16 | check_company=True, 17 | copy=False, 18 | readonly=True, 19 | ) 20 | -------------------------------------------------------------------------------- /purchase_security/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_security/readme/CONFIGURATION.rst: -------------------------------------------------------------------------------- 1 | To use this module you need to add the users whose access you want to restrict 2 | to the "Purchases / User (own orders)" group 3 | 4 | You can also assign a Purchase Manager by adding him to the 5 | "Purchases / Administrator" group 6 | -------------------------------------------------------------------------------- /purchase_security/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - [Tecnativa](https://www.tecnativa.com): 2 | - João Marques 3 | - Pilar Vargas 4 | - Stefan Ungureanu 5 | - Pedro M. Baeza 6 | - [Solvos](https://www.solvos.es): 7 | - David Alonso \<\> 8 | - [Binhex Systems Solutions](https://binhex.cloud/): 9 | - Deriman Alonso \<\> 10 | -------------------------------------------------------------------------------- /purchase_security/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This addon creates new groups in Purchase. 2 | 3 | Visibility of purchase orders is restricted for users in these groups. 4 | You can only see the purchase order: 5 | 6 | - User (own orders): If you are a follower of the partner or there is no 7 | user or you are the partner's user. 8 | - User (team orders): If you are a follower of the partner or there is 9 | no user or you are a user of your purchasing team. 10 | -------------------------------------------------------------------------------- /purchase_security/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To use this module, you need to: 2 | 3 | 1. Go to **Purchase \> Orders \> Purchase Orders** 4 | 2. Create a Purchase Order and assing a **Purchase Representative** (in 5 | the **Other Information** tab), if you are a Purchase User or 6 | Manager. If you are a Purchass User (own orders), i'll be 7 | automatically assigned, and you won't be able to change it 8 | 3. Confirm the Purchase Order 9 | 4. Go back to the **Purchase Orders** view. 10 | 5. If you are a Purchase User or a Purchase Manager, you should be able 11 | to see all orders. If not, you'll only see your own orders. 12 | -------------------------------------------------------------------------------- /purchase_security/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | purchase_security.access_purchase_team_manager,access_purchase_team,purchase_security.model_purchase_team,purchase.group_purchase_manager,1,1,1,1 3 | purchase_security.access_purchase_team_user,access_purchase_team,purchase_security.model_purchase_team,purchase.group_purchase_user,1,0,0,0 4 | -------------------------------------------------------------------------------- /purchase_security/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_security/static/description/icon.png -------------------------------------------------------------------------------- /purchase_security/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 2 | 3 | from . import test_access_rights 4 | -------------------------------------------------------------------------------- /purchase_stock_packaging/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_stock_packaging/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 ACSONE SA/NV 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | 4 | { 5 | "name": "Purchase Stock Packaging", 6 | "summary": """ 7 | Allows to transmit the product packaging from the procurement values 8 | to the generated purchase order line""", 9 | "version": "18.0.1.0.0", 10 | "license": "AGPL-3", 11 | "maintainers": ["rousseldenis"], 12 | "author": "ACSONE SA/NV,ForgeFlow,Odoo Community Association (OCA)", 13 | "website": "https://github.com/OCA/purchase-workflow", 14 | "depends": [ 15 | "purchase_stock", 16 | ], 17 | } 18 | -------------------------------------------------------------------------------- /purchase_stock_packaging/i18n/purchase_stock_packaging.pot: -------------------------------------------------------------------------------- 1 | # Translation of Odoo Server. 2 | # This file contains the translation of the following modules: 3 | # * purchase_stock_packaging 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: Odoo Server 18.0\n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "Last-Translator: \n" 10 | "Language-Team: \n" 11 | "MIME-Version: 1.0\n" 12 | "Content-Type: text/plain; charset=UTF-8\n" 13 | "Content-Transfer-Encoding: \n" 14 | "Plural-Forms: \n" 15 | 16 | #. module: purchase_stock_packaging 17 | #: model:ir.model,name:purchase_stock_packaging.model_purchase_order_line 18 | msgid "Purchase Order Line" 19 | msgstr "" 20 | -------------------------------------------------------------------------------- /purchase_stock_packaging/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_order_line 2 | -------------------------------------------------------------------------------- /purchase_stock_packaging/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_stock_packaging/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Lois Rilo Antelo \<\> 2 | - Denis Roussel \<\> 3 | - [Binhex System Solutions](https://binhex.cloud/): 4 | - Deriman Alonso \<\> 5 | - [360ERP](https://www.360erp.com): 6 | - Kevin Khao \<\> 7 | -------------------------------------------------------------------------------- /purchase_stock_packaging/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module allows to transmit the product packaging from the 2 | procurement values to the generated purchase order line 3 | -------------------------------------------------------------------------------- /purchase_stock_packaging/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | - For instance, create a sale order with a route that trigger make to 2 | order stock rules (and a purchase order). 3 | - On that sale order, force using a product packaging that would not be 4 | the default one for the filled in qunatity. 5 | - The purchase order line created should use the same product packaging. 6 | -------------------------------------------------------------------------------- /purchase_stock_packaging/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_stock_packaging/static/description/icon.png -------------------------------------------------------------------------------- /purchase_stock_packaging/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_packaging 2 | -------------------------------------------------------------------------------- /purchase_tag/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 2 | 3 | from . import models 4 | -------------------------------------------------------------------------------- /purchase_tag/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_tag 2 | from . import purchase_order 3 | -------------------------------------------------------------------------------- /purchase_tag/models/purchase_order.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 ForgeFlow S.L. 2 | # (http://www.forgeflow.com) 3 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 4 | 5 | from odoo import fields, models 6 | 7 | 8 | class PurchaseOrder(models.Model): 9 | _inherit = "purchase.order" 10 | 11 | tag_ids = fields.Many2many( 12 | comodel_name="purchase.tag", 13 | relation="purchase_order_tag_rel", 14 | column1="purchase_order_id", 15 | column2="tag_id", 16 | string="Tags", 17 | ) 18 | -------------------------------------------------------------------------------- /purchase_tag/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_tag/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Jasmin Solanki \<\> 2 | -------------------------------------------------------------------------------- /purchase_tag/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module allows to add multiple tags to purchase orders 2 | -------------------------------------------------------------------------------- /purchase_tag/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To use this module, you need to go to Purchase Orders and select tags. 2 | -------------------------------------------------------------------------------- /purchase_tag/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | access_purchase_tag,purchase_tag,model_purchase_tag,base.group_user,1,0,0,0 3 | access_purchase_tag_manager,purchase_tag_manager,model_purchase_tag,purchase.group_purchase_manager,1,1,1,1 4 | -------------------------------------------------------------------------------- /purchase_tag/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_tag/static/description/icon.png -------------------------------------------------------------------------------- /purchase_tag/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_tag 2 | -------------------------------------------------------------------------------- /purchase_tier_validation/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | 3 | from . import models 4 | -------------------------------------------------------------------------------- /purchase_tier_validation/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017 ForgeFlow S.L. 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | { 4 | "name": "Purchase Tier Validation", 5 | "summary": "Extends the functionality of Purchase Orders to " 6 | "support a tier validation process.", 7 | "version": "18.0.1.0.0", 8 | "category": "Purchases", 9 | "website": "https://github.com/OCA/purchase-workflow", 10 | "author": "ForgeFlow, Odoo Community Association (OCA)", 11 | "license": "AGPL-3", 12 | "application": False, 13 | "installable": True, 14 | "depends": ["purchase", "base_tier_validation"], 15 | "data": ["views/purchase_order_view.xml"], 16 | } 17 | -------------------------------------------------------------------------------- /purchase_tier_validation/models/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | 3 | from . import purchase_order 4 | from . import tier_definition 5 | -------------------------------------------------------------------------------- /purchase_tier_validation/models/purchase_order.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017 ForgeFlow S.L. 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | 4 | from odoo import models 5 | 6 | 7 | class PurchaseOrder(models.Model): 8 | _name = "purchase.order" 9 | _inherit = ["purchase.order", "tier.validation"] 10 | _state_from = ["draft", "sent", "to approve"] 11 | _state_to = ["purchase", "approved"] 12 | 13 | _tier_validation_manual_config = False 14 | -------------------------------------------------------------------------------- /purchase_tier_validation/models/tier_definition.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017 ForgeFlow S.L. 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | 4 | from odoo import api, models 5 | 6 | 7 | class TierDefinition(models.Model): 8 | _inherit = "tier.definition" 9 | 10 | @api.model 11 | def _get_tier_validation_model_names(self): 12 | res = super()._get_tier_validation_model_names() 13 | res.append("purchase.order") 14 | return res 15 | -------------------------------------------------------------------------------- /purchase_tier_validation/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_tier_validation/readme/CONFIGURE.md: -------------------------------------------------------------------------------- 1 | To configure this module, you need to: 2 | 3 | 1. Go to *Settings \> Technical \> Tier Validations \> Tier 4 | Definition*. 5 | 2. Create as many tiers as you want for Purchase Order model. 6 | -------------------------------------------------------------------------------- /purchase_tier_validation/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Lois Rilo \<\> 2 | - Naglis Jonaitis \<\> 3 | - Pedro Gonzalez \<\> 4 | - Kitti U. \<\> (migrate to v14) 5 | - Komit \<\>: 6 | - Quan.nhm \<\> 7 | -------------------------------------------------------------------------------- /purchase_tier_validation/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module extends the functionality of Purchase Orders to support a 2 | tier validation process. 3 | -------------------------------------------------------------------------------- /purchase_tier_validation/readme/INSTALL.md: -------------------------------------------------------------------------------- 1 | This module depends on `base_tier_validation`. You can find it at 2 | [OCA/server-ux](https://github.com/OCA/server-ux) 3 | -------------------------------------------------------------------------------- /purchase_tier_validation/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | To use this module, you need to: 2 | 3 | 1. Create a Purchase Order triggering at least one "Tier Definition". 4 | 2. Click on *Request Validation* button. 5 | 3. Under the tab *Reviews* have a look to pending reviews and their 6 | statuses. 7 | 4. Once all reviews are validated click on *Confirm Order*. 8 | 9 | Additional features: 10 | 11 | - You can filter the POs requesting your review through the filter 12 | *Needs my Review*. 13 | - User with rights to confirm the PO (validate all tiers that would be 14 | generated) can directly do the operation, this is, there is no need 15 | for her/him to request a validation. 16 | -------------------------------------------------------------------------------- /purchase_tier_validation/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_tier_validation/static/description/icon.png -------------------------------------------------------------------------------- /purchase_tier_validation/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 2 | 3 | from . import test_tier_validation 4 | -------------------------------------------------------------------------------- /purchase_tier_validation/tests/test_tier_validation.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018 ForgeFlow S.L. 2 | # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). 3 | 4 | 5 | from odoo.addons.base_tier_validation.tests.common import CommonTierValidation 6 | 7 | 8 | class TestPurchaseTierValidation(CommonTierValidation): 9 | def test_01_tier_definition_models(self): 10 | res = self.tier_def_obj._get_tier_validation_model_names() 11 | self.assertIn("purchase.order", res) 12 | -------------------------------------------------------------------------------- /purchase_warn_message/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /purchase_warn_message/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 ForgeFlow S.L. 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | 4 | { 5 | "name": "Purchase Warn Message", 6 | "summary": """ 7 | Add a popup warning on purchase to ensure warning is populated""", 8 | "version": "18.0.1.0.0", 9 | "license": "AGPL-3", 10 | "author": "ForgeFlow, Odoo Community Association (OCA)", 11 | "website": "https://github.com/OCA/purchase-workflow", 12 | "depends": ["purchase"], 13 | "data": ["views/purchase_order_views.xml"], 14 | } 15 | -------------------------------------------------------------------------------- /purchase_warn_message/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import purchase_order 2 | -------------------------------------------------------------------------------- /purchase_warn_message/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /purchase_warn_message/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Héctor Villarreal \<\> 2 | - Manuel Regidor \<\> 3 | - Roger Sans \<\> 4 | - [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) 5 | - Bhavesh Heliconia 6 | 7 | -------------------------------------------------------------------------------- /purchase_warn_message/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module add a warning popup on purchase orders to ensure warning is 2 | populated no only when partner is changed. 3 | -------------------------------------------------------------------------------- /purchase_warn_message/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/purchase_warn_message/static/description/icon.png -------------------------------------------------------------------------------- /purchase_warn_message/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_purchase_warn_message 2 | -------------------------------------------------------------------------------- /sale_purchase_force_vendor/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /sale_purchase_force_vendor/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Tecnativa - Víctor Martínez 2 | # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | { 4 | "name": "Sale Purchase Force Vendor", 5 | "version": "18.0.1.0.0", 6 | "category": "Purchase Management", 7 | "website": "https://github.com/OCA/purchase-workflow", 8 | "author": "Tecnativa, Odoo Community Association (OCA)", 9 | "license": "AGPL-3", 10 | "depends": ["sale_purchase_stock"], 11 | "installable": True, 12 | "data": [ 13 | "views/res_config_settings_view.xml", 14 | "views/sale_order_view.xml", 15 | ], 16 | "maintainers": ["victoralmau"], 17 | } 18 | -------------------------------------------------------------------------------- /sale_purchase_force_vendor/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import res_company 2 | from . import res_config_settings 3 | from . import sale_order_line 4 | from . import stock_move 5 | -------------------------------------------------------------------------------- /sale_purchase_force_vendor/models/res_company.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Tecnativa - Víctor Martínez 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). 3 | from odoo import fields, models 4 | 5 | 6 | class ResCompany(models.Model): 7 | _inherit = "res.company" 8 | 9 | sale_purchase_force_vendor_restrict = fields.Boolean( 10 | string="Restrict allowed vendors in sale orders", 11 | default=True, 12 | ) 13 | -------------------------------------------------------------------------------- /sale_purchase_force_vendor/models/res_config_settings.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Tecnativa - Víctor Martínez 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). 3 | from odoo import fields, models 4 | 5 | 6 | class ResConfigSettings(models.TransientModel): 7 | _inherit = "res.config.settings" 8 | 9 | sale_purchase_force_vendor_restrict = fields.Boolean( 10 | string="Restrict allowed vendors in sale orders", 11 | related="company_id.sale_purchase_force_vendor_restrict", 12 | readonly=False, 13 | ) 14 | -------------------------------------------------------------------------------- /sale_purchase_force_vendor/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /sale_purchase_force_vendor/readme/CONFIGURE.md: -------------------------------------------------------------------------------- 1 | To configure this module, you need to: 2 | 3 | 1. Install *sale_management* app. 4 | 2. Go to *Inventory -\> Configuration -\> Settings* and check 5 | "Multi-Step Routes" option. 6 | 3. Go to *Inventory -\> Configuration -\> Routes \> Buy* and check 7 | "Sales Order Lines" option. 8 | 4. Go to *Inventory -\> Configuration -\> Routes*, filter "Archived" an 9 | "Unarchived" MTO route. 10 | 5. Go to *Sale -\> Products -\> Products*. 11 | 6. Create a new product with the following options: 12 | - \[Puchase tab\] \`Vendors\`: Set different vendors (Vendor A + 13 | Vendor B). 14 | - \[Iventory tab\] \`Routes\`: Buy and MTO 15 | -------------------------------------------------------------------------------- /sale_purchase_force_vendor/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - [Tecnativa](https://www.tecnativa.com): 2 | - Víctor Martínez 3 | - Pedro M. Baeza 4 | -------------------------------------------------------------------------------- /sale_purchase_force_vendor/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module allows you to select a vendor at the sale order line level 2 | when a route is defined. 3 | -------------------------------------------------------------------------------- /sale_purchase_force_vendor/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | 1. Go to *Sale -\> Orders -\> Quotations* and create a new Quotation. 2 | 2. Create a new line with the following options: 3 | - \`Route\`: MTO. 4 | - \`Vendor\`: Vendor B. 5 | 3. Confirm sale order. 6 | 4. A new purchase order will have been created to Vendor B. 7 | 5. If you don't want to apply restriction, you can uncheck "Restrict 8 | allowed vendors in sale orders" field in *Purchase \> Configuration 9 | \> Products*. 10 | -------------------------------------------------------------------------------- /sale_purchase_force_vendor/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/sale_purchase_force_vendor/static/description/icon.png -------------------------------------------------------------------------------- /sale_purchase_force_vendor/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Tecnativa - Víctor Martínez 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 3 | 4 | from . import test_sale_purchase_force_vendor 5 | -------------------------------------------------------------------------------- /supplier_calendar/__init__.py: -------------------------------------------------------------------------------- 1 | # License LGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 2 | from . import models 3 | -------------------------------------------------------------------------------- /supplier_calendar/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 ForgeFlow 2 | # License LGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 3 | { 4 | "name": "Supplier Calendar", 5 | "summary": "Supplier Calendar", 6 | "version": "18.0.1.0.0", 7 | "website": "https://github.com/OCA/purchase-workflow", 8 | "category": "Purchase Management", 9 | "author": "ForgeFlow, Odoo Community Association (OCA)", 10 | "maintainers": ["LoisRForgeFlow"], 11 | "license": "LGPL-3", 12 | "application": False, 13 | "installable": True, 14 | "auto_install": False, 15 | "depends": ["purchase_stock", "resource"], 16 | "data": ["views/res_partner_view.xml", "views/product_view.xml"], 17 | } 18 | -------------------------------------------------------------------------------- /supplier_calendar/models/__init__.py: -------------------------------------------------------------------------------- 1 | # License LGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). 2 | from . import res_partner 3 | from . import product 4 | from . import stock_rule 5 | from . import purchase 6 | -------------------------------------------------------------------------------- /supplier_calendar/models/product.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 ForgeFlow S.L. 2 | # License LGPL-3.0 or later (https://www.gnu.org/licenses/agpl). 3 | 4 | from odoo import fields, models 5 | 6 | 7 | class ProductSupplierInfo(models.Model): 8 | _inherit = "product.supplierinfo" 9 | 10 | delay_calendar_type = fields.Selection( 11 | related="partner_id.delay_calendar_type", readonly=True 12 | ) 13 | -------------------------------------------------------------------------------- /supplier_calendar/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /supplier_calendar/readme/CONFIGURE.md: -------------------------------------------------------------------------------- 1 | - Go to *Settings* and activate the developer mode. 2 | - Go to *Settings \> Technical \> Resource \> Working Schedules* and define 3 | your resource calendar. 4 | - Go to *Contacts \> Sales&Purchases \> Purchase \> Delay Calendar Type* 5 | and assign Supplier Calendar and in *Factory Calendar* assign the 6 | Resource Calendar desired. 7 | -------------------------------------------------------------------------------- /supplier_calendar/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Núria Martín \<\> 2 | - Jordi Ballester \<\> 3 | - Lois Rilo \<\> 4 | -------------------------------------------------------------------------------- /supplier_calendar/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module adds a Calendar to the ResPartner model. This calendar can 2 | then used as the basis of the proper computation of start/end dates 3 | based on the delivery lead time of the supplier in this and other 4 | modules. 5 | 6 | In this module, the calendar is considered in the computation of the 7 | schedules date of a stock picking and in the order date of a purchase 8 | order. 9 | -------------------------------------------------------------------------------- /supplier_calendar/readme/USAGE.md: -------------------------------------------------------------------------------- 1 | When a picking is created from a purchase order of a supplier, the lead 2 | time used to calculate the scheduled date is computed in natural days. 3 | At the same time, when a purchase order is created due to a a 4 | procurement evaluation, its order date is also computed considering the 5 | lead time in natural days. THis module adds the possibility of 6 | expressing the lead time of a vendor in his own calendar. This way, the 7 | order dates of purchase orders and the scheduled dates of receipts will 8 | only take into account the supplier working days. 9 | -------------------------------------------------------------------------------- /supplier_calendar/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/supplier_calendar/static/description/icon.png -------------------------------------------------------------------------------- /supplier_calendar/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). 2 | from . import test_supplier_calendar 3 | -------------------------------------------------------------------------------- /test-requirements.txt: -------------------------------------------------------------------------------- 1 | odoo_test_helper 2 | -------------------------------------------------------------------------------- /vendor_transport_lead_time/__init__.py: -------------------------------------------------------------------------------- 1 | from . import models 2 | -------------------------------------------------------------------------------- /vendor_transport_lead_time/__manifest__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Camptocamp SA 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). 3 | { 4 | "name": "Vendor transport lead time", 5 | "summary": "Purchase delay based on transport and supplier delays", 6 | "version": "18.0.1.0.1", 7 | "website": "https://github.com/OCA/purchase-workflow", 8 | "author": "Camptocamp, Odoo Community Association (OCA)", 9 | "license": "AGPL-3", 10 | "depends": ["product", "purchase"], 11 | "data": [ 12 | "views/product_supplierinfo.xml", 13 | "views/purchase_order_line.xml", 14 | "report/purchase_order_template.xml", 15 | ], 16 | "installable": True, 17 | } 18 | -------------------------------------------------------------------------------- /vendor_transport_lead_time/models/__init__.py: -------------------------------------------------------------------------------- 1 | from . import product_supplierinfo 2 | from . import purchase_order_line 3 | -------------------------------------------------------------------------------- /vendor_transport_lead_time/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["whool"] 3 | build-backend = "whool.buildapi" 4 | -------------------------------------------------------------------------------- /vendor_transport_lead_time/readme/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | - Matthieu Méquignon \<\> 2 | - Phuc Tran Thanh \<\> 3 | - Do Anh Duy \<\> 4 | -------------------------------------------------------------------------------- /vendor_transport_lead_time/readme/CREDITS.md: -------------------------------------------------------------------------------- 1 | The development and migration of this module has been financially supported by: 2 | 3 | - Camptocamp 4 | -------------------------------------------------------------------------------- /vendor_transport_lead_time/readme/DESCRIPTION.md: -------------------------------------------------------------------------------- 1 | This module overrides the product.supplierinfo model. It splits the 2 | delay into two new delay fields, Supplier Lead Time and Transport Lead 3 | Time, to sum them into the actual Lead Time. This allow users to get the 4 | information about the transportation lead time in order to plan the 5 | transport properly when relevant. 6 | -------------------------------------------------------------------------------- /vendor_transport_lead_time/readme/HISTORY.md: -------------------------------------------------------------------------------- 1 | ## 13.0.1.0.0 (2020-06-15) 2 | 3 | - Initial version 4 | -------------------------------------------------------------------------------- /vendor_transport_lead_time/static/description/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCA/purchase-workflow/6164e38fa6e009285601889cb306454902fbffa6/vendor_transport_lead_time/static/description/icon.png -------------------------------------------------------------------------------- /vendor_transport_lead_time/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from . import test_delay 2 | from . import test_purchase_order 3 | --------------------------------------------------------------------------------