Initial commit: OCA Technical packages (595 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:03 +02:00
commit 2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions

View file

@ -0,0 +1,47 @@
# PoS Order To Sale Order
Odoo addon: pos_order_to_sale_order
## Installation
```bash
pip install odoo-bringout-oca-pos-pos_order_to_sale_order
```
## Dependencies
This addon depends on:
- point_of_sale
- sale
## Manifest Information
- **Name**: PoS Order To Sale Order
- **Version**: 16.0.1.0.12
- **Category**: Point Of Sale
- **License**: AGPL-3
- **Installable**: True
## Source
Based on [OCA/pos](https://github.com/OCA/pos) branch 16.0, addon `pos_order_to_sale_order`.
## License
This package maintains the original AGPL-3 license from the upstream Odoo project.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Reports: doc/REPORTS.md
- Security: doc/SECURITY.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Pos_order_to_sale_order Module - pos_order_to_sale_order
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for pos_order_to_sale_order. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,3 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -0,0 +1,6 @@
# Dependencies
This addon depends on:
- [point_of_sale](../../odoo-bringout-oca-ocb-point_of_sale)
- [sale](../../odoo-bringout-oca-ocb-sale)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon pos_order_to_sale_order or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-pos-pos_order_to_sale_order"
# or
uv pip install odoo-bringout-oca-pos-pos_order_to_sale_order"
```

View file

@ -0,0 +1,15 @@
# Models
Detected core models and extensions in pos_order_to_sale_order.
```mermaid
classDiagram
class pos_config
class res_config_settings
class sale_order
class sale_order_line
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: pos_order_to_sale_order. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon pos_order_to_sale_order
- License: LGPL-3

View file

@ -0,0 +1,3 @@
# Reports
This module does not define custom reports.

View file

@ -0,0 +1,8 @@
# Security
This module does not define custom security rules or access controls beyond Odoo defaults.
Default Odoo security applies:
- Base user access through standard groups
- Model access inherited from dependencies
- No custom row-level security rules

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon pos_order_to_sale_order
```

View file

@ -0,0 +1,3 @@
# Wizards
This module does not include UI wizards.

View file

@ -0,0 +1,147 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association
=======================
PoS Order To Sale Order
=======================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:3cf0b87328c9582b539d1b325d7fc33161796bd89fb113acafaa245c3ea7b701
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
:target: https://odoo-community.org/page/development-status
:alt: Production/Stable
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpos-lightgray.png?logo=github
:target: https://github.com/OCA/pos/tree/16.0/pos_order_to_sale_order
:alt: OCA/pos
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/pos-16-0/pos-16-0-pos_order_to_sale_order
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/pos&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module extends the functionality of point of sale to allow sale orders
creation from the Point of Sale.
In the POS UI, button has been added to create a sale order and discard
the current POS order.
This module is usefull in many cases, for exemple :
* take orders with a very simple interface
* if you have some customers that come every day in your shop, but want to
have a unique invoice at the end of the month. With that module, you can
create a sale order and deliver products every time to keep your stock value
correct, and to create a unique invoice, when you want.
**Table of contents**
.. contents::
:local:
Configuration
=============
* Go to Point Of Sale / Configuration / Point of Sale
* Check the box 'Create Sale Orders'
* Select the desired default behaviour
.. figure:: https://raw.githubusercontent.com/OCA/pos/16.0/pos_order_to_sale_order/static/description/res_config_settings_form.png
:width: 800 px
Usage
=====
* Open your Point of sale
* Create a new order and select products
* Select a customer
* Click on the "Create Order" button
.. figure:: https://raw.githubusercontent.com/OCA/pos/16.0/pos_order_to_sale_order/static/description/pos_frontend_button.png
Four options are available (depending on the PoS settings):
* **Create a draft Order**
A new sale order in a draft mode will be created that can be changed later.
* **Create a Confirmed Order**
A new sale order will be created and confirmed.
* **Create Delivered Sale Order**
A new sale order will be created and confirmed.
the associated picking will be marked as delivered.
* **Create Invoiced Sale Order**
A new sale order will be created and confirmed.
the associated picking will be marked as delivered.
An invoice will be created and confirmed.
.. figure:: https://raw.githubusercontent.com/OCA/pos/16.0/pos_order_to_sale_order/static/description/pos_frontend_popup.png
Development
===========
* Some prepare functions are available in the ``sale.order`` model and
``sale.order.line`` models to overload the creation of the sale order.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/pos/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/pos/issues/new?body=module:%20pos_order_to_sale_order%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* GRAP
Contributors
~~~~~~~~~~~~
* Sylvain LE GAL (https://www.twitter.com/legalsylvain)
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
.. |maintainer-legalsylvain| image:: https://github.com/legalsylvain.png?size=40px
:target: https://github.com/legalsylvain
:alt: legalsylvain
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-legalsylvain|
This module is part of the `OCA/pos <https://github.com/OCA/pos/tree/16.0/pos_order_to_sale_order>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1 @@
from . import models

View file

@ -0,0 +1,29 @@
# Copyright (C) 2017 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "PoS Order To Sale Order",
"version": "16.0.1.0.12",
"author": "GRAP,Odoo Community Association (OCA)",
"category": "Point Of Sale",
"license": "AGPL-3",
"depends": ["point_of_sale", "sale"],
"maintainers": ["legalsylvain"],
"development_status": "Production/Stable",
"website": "https://github.com/OCA/pos",
"data": ["views/view_res_config_settings.xml"],
"assets": {
"point_of_sale.assets": [
"pos_order_to_sale_order/static/src/css/pos.css",
"pos_order_to_sale_order/static/src/js/CreateOrderButton.js",
"pos_order_to_sale_order/static/src/js/CreateOrderPopup.js",
"pos_order_to_sale_order/static/src/xml/CreateOrderButton.xml",
"pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml",
],
"web.assets_tests": [
"pos_order_to_sale_order/static/tests/**/*.js",
],
},
"installable": True,
}

View file

@ -0,0 +1,152 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_order_to_sale_order
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_res_config_settings
msgid "Config Settings"
msgstr "Postavke"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Confirmed Sale Order"
msgstr "Kreiraj potvrđenu prodajnu narudžbu"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_confirmed_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_confirmed_sale_order
msgid "Create Confirmed Sale Orders"
msgstr "Kreiraj potvrđene prodajne narudžbe"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Delivered Sale Order"
msgstr "Kreiraj isporučenu prodajnu narudžbu"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_delivered_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_delivered_sale_order
msgid "Create Delivered Sale Orders"
msgstr "Kreiraj isporučene prodajne narudžbe"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Draft Sale Order"
msgstr "Kreiraj nacrt prodajne narudžbe"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_draft_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_draft_sale_order
msgid "Create Draft Sale Orders"
msgstr "Kreiraj nacrte prodajnih narudžbi"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Invoiced Sale Order"
msgstr "Kreiraj fakturisanu prodajnu narudžbu"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_invoiced_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_invoiced_sale_order
msgid "Create Invoiced Sale Orders"
msgstr "Kreiraj fakturisane prodajne narudžbe"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderButton.xml:0
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Order"
msgstr "Kreiraj narudžbu"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_sale_order
msgid "Create Sale Orders"
msgstr "Kreiraj prodajne narudžbe"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Discard"
msgstr "Napusti"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_confirmed_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_confirmed_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed Sale"
" Order, based on the current draft PoS Order."
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_invoiced_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_invoiced_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed sale Order, based on the current draft PoS Order.\n"
" the according picking will be marked as delivered.\n"
" The Invoice will be generated and confirm.\n"
" Only invoice payment process will be possible."
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_delivered_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_delivered_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed sale Order, based on the current draft PoS Order.\n"
" the according picking will be marked as delivered. Only invoices process will be possible."
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_draft_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_draft_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a draft Sale "
"Order, based on the current draft PoS Order."
msgstr ""
#. module: pos_order_to_sale_order
#. odoo-python
#: code:addons/pos_order_to_sale_order/models/sale_order.py:0
#, python-format
msgid "Point of Sale %s"
msgstr "Prodajno mjesto %s"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_pos_config
msgid "Point of Sale Configuration"
msgstr "Postavke prodajnog mjesta"
#. module: pos_order_to_sale_order
#: model_terms:ir.ui.view,arch_db:pos_order_to_sale_order.view_res_config_settings_form
msgid "Sale Order Creation"
msgstr "Kreiranje prodajne narudžbe"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_sale_order
msgid "Sales Order"
msgstr "Prodajni nalog"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_sale_order_line
msgid "Sales Order Line"
msgstr "Stavka prodajne narudžbe"

View file

@ -0,0 +1,213 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_order_to_sale_order
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-09-02 19:38+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_res_config_settings
msgid "Config Settings"
msgstr "Ajustes de configuración"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Confirmed Sale Order"
msgstr "Crear pedido de venta confirmado"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_confirmed_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_confirmed_sale_order
msgid "Create Confirmed Sale Orders"
msgstr "Crear pedidos de venta confirmados"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Delivered Sale Order"
msgstr "Crear pedido de venta entregado"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_delivered_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_delivered_sale_order
msgid "Create Delivered Sale Orders"
msgstr "Crear pedidos de venta entregados"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Draft Sale Order"
msgstr "Crear borrador de orden de venta"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_draft_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_draft_sale_order
msgid "Create Draft Sale Orders"
msgstr "Crear borradores de pedidos de venta"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Invoiced Sale Order"
msgstr "Crear pedido de venta facturado"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_invoiced_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_invoiced_sale_order
msgid "Create Invoiced Sale Orders"
msgstr "Crear órdenes de venta facturadas"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderButton.xml:0
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Order"
msgstr "Crear pedido de venta"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_sale_order
msgid "Create Sale Orders"
msgstr "Crear pedidos de venta"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Discard"
msgstr "Descartar"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_confirmed_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_confirmed_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed Sale "
"Order, based on the current draft PoS Order."
msgstr ""
"Si se marca, el cajero tendrá la posibilidad de crear un pedido de venta "
"confirmada, basada en el borrador actual de la orden de compra."
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_invoiced_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_invoiced_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed sale "
"Order, based on the current draft PoS Order.\n"
" the according picking will be marked as delivered.\n"
" The Invoice will be generated and confirm.\n"
" Only invoice payment process will be possible."
msgstr ""
"Si está marcada, el cajero tendrá la posibilidad de crear un Pedido de venta "
"confirmado, basado en el borrador de Pedido PoS actual.\n"
"La recogida correspondiente se marcará como entregada.\n"
" La factura se generará y confirmará.\n"
" Sólo será posible el proceso de pago de la factura."
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_delivered_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_delivered_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed sale "
"Order, based on the current draft PoS Order.\n"
" the according picking will be marked as delivered. Only invoices process "
"will be possible."
msgstr ""
"Si se marca, el cajero tendrá la posibilidad de crear una orden de venta "
"confirmada, basada en el borrador actual de la orden de compra. La selección "
"correspondiente se marcará como entregada. Solo el proceso de facturas será "
"posible."
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_draft_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_draft_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a draft Sale "
"Order, based on the current draft PoS Order."
msgstr ""
"Si se marca, el cajero tendrá la posibilidad de crear un borrador de un "
"pedido de venta, basado en el borrador actual de la orden de compra."
#. module: pos_order_to_sale_order
#. odoo-python
#: code:addons/pos_order_to_sale_order/models/sale_order.py:0
#, python-format
msgid "Point of Sale %s"
msgstr "Punto de venta %s"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_pos_config
msgid "Point of Sale Configuration"
msgstr "Configuración del punto de venta"
#. module: pos_order_to_sale_order
#: model_terms:ir.ui.view,arch_db:pos_order_to_sale_order.view_res_config_settings_form
msgid "Sale Order Creation"
msgstr "Creación de orden de venta"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_sale_order
msgid "Sales Order"
msgstr "Órdenes de venta"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_sale_order_line
msgid "Sales Order Line"
msgstr "Línea de pedido de venta"
#, python-format
#~ msgid "Back"
#~ msgstr "Volver"
#, python-format
#~ msgid "Check your internet connection and try again."
#~ msgstr "Verifique su conexión a Internet e intente nuevamente."
#, python-format
#~ msgid "Create Sale Order"
#~ msgstr "Crear pedido de venta"
#, python-format
#~ msgid "Create Sale Order and discard the current PoS Order?"
#~ msgstr "¿Crear pedido de venta y descartar la orden de compra actual?"
#, python-format
#~ msgid "No customer defined"
#~ msgstr "Ningún cliente definido"
#~ msgid "Sale Order"
#~ msgstr "Pedido de Venta"
#~ msgid "Sale Order Creations"
#~ msgstr "Creaciones de pedidos de venta"
#, python-format
#~ msgid "The order could not be sent"
#~ msgstr "No se pudo enviar el pedido"
#, python-format
#~ msgid ""
#~ "This operation will permanently discard the current PoS Order and create "
#~ "a Sale Order, based on the current order lines."
#~ msgstr ""
#~ "Esta operación descartará permanentemente el pedido PdV actual y creará "
#~ "un pedido de venta, basado en las líneas de pedido actuales."
#, python-format
#~ msgid "You should select a customer in order to create a Sale Order."
#~ msgstr "Debe seleccionar un cliente para crear un pedido de venta."

View file

@ -0,0 +1,166 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_order_to_sale_order
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0beta\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-10-07 17:02+0000\n"
"PO-Revision-Date: 2022-10-07 17:02+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_res_config_settings
msgid "Config Settings"
msgstr "Paramètres de config"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Confirmed Sale Order"
msgstr "Créer une vente confirmée"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_confirmed_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_confirmed_sale_order
msgid "Create Confirmed Sale Orders"
msgstr "Créer des ventes confirmées"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Delivered Sale Order"
msgstr "Créer une vente livrée"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_delivered_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_delivered_sale_order
msgid "Create Delivered Sale Orders"
msgstr "Créer des ventes livrées"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Draft Sale Order"
msgstr "Créer un devis en brouillon"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_draft_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_draft_sale_order
msgid "Create Draft Sale Orders"
msgstr "Créer des devis"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Invoiced Sale Order"
msgstr "Créer une vente facturée"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_invoiced_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_invoiced_sale_order
msgid "Create Invoiced Sale Orders"
msgstr "Créer des ventes facturées"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderButton.xml:0
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Order"
msgstr "Créer une vente"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_sale_order
msgid "Create Sale Orders"
msgstr "Créer des ventes"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Discard"
msgstr "Annuler"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_confirmed_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_confirmed_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed Sale "
"Order, based on the current draft PoS Order."
msgstr ""
"En cochant la case, le caissier aura la possibilité de créer une vente "
"confirmée, à partir du ticket de caisse en cours."
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_invoiced_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_invoiced_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed sale "
"Order, based on the current draft PoS Order.\n"
" the according picking will be marked as delivered.\n"
" The Invoice will be generated and confirm.\n"
" Only invoice payment process will be possible."
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_delivered_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_delivered_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed sale "
"Order, based on the current draft PoS Order.\n"
" the according picking will be marked as delivered. Only invoices process "
"will be possible."
msgstr ""
"En cochant la case, le caissier aura la possibilité de créer une vente "
"confirmée, à partir du ticket de caisse en cours.\n"
" Le bon de livraison correspondant sera marqué comme livré. Seul le "
"processus de facturation sera possible."
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_draft_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_draft_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a draft Sale "
"Order, based on the current draft PoS Order."
msgstr ""
"En cochant la case, le caissier aura la possibilité de créer une vente en "
"brouillon, à partir du ticket de caisse en cours."
#. module: pos_order_to_sale_order
#. odoo-python
#: code:addons/pos_order_to_sale_order/models/sale_order.py:0
#, python-format
msgid "Point of Sale %s"
msgstr "Point de vente %s"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_pos_config
msgid "Point of Sale Configuration"
msgstr "Paramétrage du point de vente"
#. module: pos_order_to_sale_order
#: model_terms:ir.ui.view,arch_db:pos_order_to_sale_order.view_res_config_settings_form
msgid "Sale Order Creation"
msgstr "Création de bon de commande"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_sale_order
msgid "Sales Order"
msgstr "Bon de commande"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_sale_order_line
msgid "Sales Order Line"
msgstr "Ligne de bons de commande"

View file

@ -0,0 +1,171 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_order_to_sale_order
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-10-13 14:40+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_res_config_settings
msgid "Config Settings"
msgstr "Impostazioni configurazione"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Confirmed Sale Order"
msgstr "Crea ordine di vendita confermato"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_confirmed_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_confirmed_sale_order
msgid "Create Confirmed Sale Orders"
msgstr "Crea ordini di vendita confermati"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Delivered Sale Order"
msgstr "Crea ordine vendita consegnato"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_delivered_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_delivered_sale_order
msgid "Create Delivered Sale Orders"
msgstr "Crea ordini di vendita consegnati"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Draft Sale Order"
msgstr "Crea bozza ordine di vendita"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_draft_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_draft_sale_order
msgid "Create Draft Sale Orders"
msgstr "Crea bozze ordini di vendita"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Invoiced Sale Order"
msgstr "Crea ordine di vendita fatturato"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_invoiced_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_invoiced_sale_order
msgid "Create Invoiced Sale Orders"
msgstr "Crea ordini di vendita fatturati"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderButton.xml:0
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Order"
msgstr "Crea ordine"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_sale_order
msgid "Create Sale Orders"
msgstr "Crea ordini di vendita"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Discard"
msgstr "Abbandona"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_confirmed_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_confirmed_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed Sale "
"Order, based on the current draft PoS Order."
msgstr ""
"Se selezionato, il cassiere avrà la possibilità di creare un ordine di "
"vendita confermato in base all'attuale bozza ordine PoS."
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_invoiced_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_invoiced_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed sale "
"Order, based on the current draft PoS Order.\n"
" the according picking will be marked as delivered.\n"
" The Invoice will be generated and confirm.\n"
" Only invoice payment process will be possible."
msgstr ""
"Se selezionato, il cassiere avrà la possibilità di creare un ordine di "
"vendita confermato in base all'attuale bozza ordine PoS.\n"
"Il prelievo collegato verrà impostato a consegnato.\n"
"La fattura verrà generata e confermata.\n"
"Sarà possibile solo attivare il processo di pagamento fattura."
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_delivered_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_delivered_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed sale "
"Order, based on the current draft PoS Order.\n"
" the according picking will be marked as delivered. Only invoices process "
"will be possible."
msgstr ""
"Se impostato, il cassiere avrà la possibilità di creare un ordine di vendita "
"confermato, in base all'attuale bozza di ordine PoS.\n"
"Il prelievo associato verrà impostato a consegnato. Sarà possibile solo "
"fatturare."
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_draft_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_draft_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a draft Sale "
"Order, based on the current draft PoS Order."
msgstr ""
"Se impostato, il cassiere avrà la possibilità di creare una bozza di ordine "
"di vendita, in base alla bozza attuale di ordine PoS."
#. module: pos_order_to_sale_order
#. odoo-python
#: code:addons/pos_order_to_sale_order/models/sale_order.py:0
#, python-format
msgid "Point of Sale %s"
msgstr "Punto vendita %s"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_pos_config
msgid "Point of Sale Configuration"
msgstr "Configurazione punto vendita"
#. module: pos_order_to_sale_order
#: model_terms:ir.ui.view,arch_db:pos_order_to_sale_order.view_res_config_settings_form
msgid "Sale Order Creation"
msgstr "Creazione ordine di vendita"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_sale_order
msgid "Sales Order"
msgstr "Ordine di vendita"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_sale_order_line
msgid "Sales Order Line"
msgstr "Riga ordine di vendita"

View file

@ -0,0 +1,152 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_order_to_sale_order
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_res_config_settings
msgid "Config Settings"
msgstr ""
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Confirmed Sale Order"
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_confirmed_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_confirmed_sale_order
msgid "Create Confirmed Sale Orders"
msgstr ""
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Delivered Sale Order"
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_delivered_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_delivered_sale_order
msgid "Create Delivered Sale Orders"
msgstr ""
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Draft Sale Order"
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_draft_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_draft_sale_order
msgid "Create Draft Sale Orders"
msgstr ""
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Invoiced Sale Order"
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_invoiced_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_invoiced_sale_order
msgid "Create Invoiced Sale Orders"
msgstr ""
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderButton.xml:0
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Order"
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_sale_order
msgid "Create Sale Orders"
msgstr ""
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Discard"
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_confirmed_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_confirmed_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed Sale"
" Order, based on the current draft PoS Order."
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_invoiced_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_invoiced_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed sale Order, based on the current draft PoS Order.\n"
" the according picking will be marked as delivered.\n"
" The Invoice will be generated and confirm.\n"
" Only invoice payment process will be possible."
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_delivered_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_delivered_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed sale Order, based on the current draft PoS Order.\n"
" the according picking will be marked as delivered. Only invoices process will be possible."
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_draft_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_draft_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a draft Sale "
"Order, based on the current draft PoS Order."
msgstr ""
#. module: pos_order_to_sale_order
#. odoo-python
#: code:addons/pos_order_to_sale_order/models/sale_order.py:0
#, python-format
msgid "Point of Sale %s"
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_pos_config
msgid "Point of Sale Configuration"
msgstr ""
#. module: pos_order_to_sale_order
#: model_terms:ir.ui.view,arch_db:pos_order_to_sale_order.view_res_config_settings_form
msgid "Sale Order Creation"
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_sale_order
msgid "Sales Order"
msgstr ""
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_sale_order_line
msgid "Sales Order Line"
msgstr ""

View file

@ -0,0 +1,214 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_order_to_sale_order
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-05-23 01:18+0000\n"
"Last-Translator: Rodrigo Macedo <sottomaiormacedotec@users.noreply."
"translation.odoo-community.org>\n"
"Language-Team: none\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_res_config_settings
msgid "Config Settings"
msgstr "Configurações"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Confirmed Sale Order"
msgstr "Criar ordem de venda confirmada"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_confirmed_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_confirmed_sale_order
msgid "Create Confirmed Sale Orders"
msgstr "Criar Ordem de Venda confirmada"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Delivered Sale Order"
msgstr "Criar Ordem de Venda Entregue"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_delivered_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_delivered_sale_order
msgid "Create Delivered Sale Orders"
msgstr "Criar Ordem de Venda entregue"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Draft Sale Order"
msgstr "Criar Cotação"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_draft_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_draft_sale_order
msgid "Create Draft Sale Orders"
msgstr "Criar Cotação"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Invoiced Sale Order"
msgstr "Criar pedido de venda com fatura"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_invoiced_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_invoiced_sale_order
msgid "Create Invoiced Sale Orders"
msgstr "Criar pedidos de vendas com fatura"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderButton.xml:0
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Create Order"
msgstr "Criar pedido"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,field_description:pos_order_to_sale_order.field_pos_config__iface_create_sale_order
msgid "Create Sale Orders"
msgstr "Criar Ordem de Venda"
#. module: pos_order_to_sale_order
#. odoo-javascript
#: code:addons/pos_order_to_sale_order/static/src/xml/CreateOrderPopup.xml:0
#, python-format
msgid "Discard"
msgstr "Descartar"
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_confirmed_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_confirmed_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed Sale "
"Order, based on the current draft PoS Order."
msgstr ""
"Se marcado, o caixa terá a possibilidade de criar um pedido de venda "
"confirmado, com base no atual rascunho do pedido do PDV."
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_invoiced_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_invoiced_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed sale "
"Order, based on the current draft PoS Order.\n"
" the according picking will be marked as delivered.\n"
" The Invoice will be generated and confirm.\n"
" Only invoice payment process will be possible."
msgstr ""
"Se marcada, o caixa terá a possibilidade de criar uma Ordem de venda "
"confirmada, com base no projeto de Ordem PoS atual.\n"
" a coleta correspondente será marcada como entregue.\n"
" A fatura será gerada e confirmada.\n"
" Somente o processo de pagamento de fatura será possível."
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_delivered_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_delivered_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a confirmed sale "
"Order, based on the current draft PoS Order.\n"
" the according picking will be marked as delivered. Only invoices process "
"will be possible."
msgstr ""
"Se marcado, o caixa terá a possibilidade de criar um pedido de venda "
"confirmado, com base no rascunho do pedido de PDV atual.\n"
" O picking correspondente será marcado como entregue. Somente o processo de "
"faturas será possível."
#. module: pos_order_to_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_pos_config__iface_create_draft_sale_order
#: model:ir.model.fields,help:pos_order_to_sale_order.field_res_config_settings__pos_iface_create_draft_sale_order
msgid ""
"If checked, the cashier will have the possibility to create a draft Sale "
"Order, based on the current draft PoS Order."
msgstr ""
"Se marcado, o caixa terá a possibilidade de criar um rascunho de pedido de "
"venda, com base no rascunho atual de pedido de PDV."
#. module: pos_order_to_sale_order
#. odoo-python
#: code:addons/pos_order_to_sale_order/models/sale_order.py:0
#, python-format
msgid "Point of Sale %s"
msgstr "Ponto de Venda %s"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_pos_config
msgid "Point of Sale Configuration"
msgstr "Configuração de Ponto de Venda"
#. module: pos_order_to_sale_order
#: model_terms:ir.ui.view,arch_db:pos_order_to_sale_order.view_res_config_settings_form
msgid "Sale Order Creation"
msgstr "Criação de pedido de venda"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_sale_order
msgid "Sales Order"
msgstr "Pedidos de Vendas"
#. module: pos_order_to_sale_order
#: model:ir.model,name:pos_order_to_sale_order.model_sale_order_line
msgid "Sales Order Line"
msgstr "Linha da Ordem de Venda"
#, python-format
#~ msgid "Back"
#~ msgstr "Voltar"
#, python-format
#~ msgid "Check your internet connection and try again."
#~ msgstr "Verifique sua conexão com a internet e tente novamente."
#, python-format
#~ msgid "Create Sale Order"
#~ msgstr "Criar Ordem de Venda"
#, python-format
#~ msgid "Create Sale Order and discard the current PoS Order?"
#~ msgstr "Criar Pedido de Venda e descartar o Pedido de PDV atual?"
#, python-format
#~ msgid "No customer defined"
#~ msgstr "Defina um Cliente"
#~ msgid "Sale Order"
#~ msgstr "Ordem de Venda"
#~ msgid "Sale Order Creations"
#~ msgstr "Criar Ordem de Venda"
#, python-format
#~ msgid "The order could not be sent"
#~ msgstr "A ordem não pôde ser enviada"
#, python-format
#~ msgid ""
#~ "This operation will permanently discard the current PoS Order and create "
#~ "a Sale Order, based on the current order lines."
#~ msgstr ""
#~ "Esta operação descartará permanentemente o Pedido PDV atual e criará um "
#~ "Pedido de Venda, com base nas linhas de pedidos atuais."
#, python-format
#~ msgid "You should select a customer in order to create a Sale Order."
#~ msgstr "Você deve selecionar um cliente para criar um Pedido de Venda."

View file

@ -0,0 +1,4 @@
from . import sale_order
from . import sale_order_line
from . import pos_config
from . import res_config_settings

View file

@ -0,0 +1,65 @@
# Copyright (C) 2017 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
class PosConfig(models.Model):
_inherit = "pos.config"
iface_create_sale_order = fields.Boolean(
string="Create Sale Orders",
compute="_compute_iface_create_sale_order",
store=True,
)
iface_create_draft_sale_order = fields.Boolean(
string="Create Draft Sale Orders",
default=True,
help="If checked, the cashier will have the possibility to create"
" a draft Sale Order, based on the current draft PoS Order.",
)
iface_create_confirmed_sale_order = fields.Boolean(
string="Create Confirmed Sale Orders",
default=True,
help="If checked, the cashier will have the possibility to create"
" a confirmed Sale Order, based on the current draft PoS Order.",
)
iface_create_delivered_sale_order = fields.Boolean(
string="Create Delivered Sale Orders",
default=True,
help="If checked, the cashier will have the possibility to create"
" a confirmed sale Order, based on the current draft PoS Order.\n"
" the according picking will be marked as delivered. Only invoices"
" process will be possible.",
)
iface_create_invoiced_sale_order = fields.Boolean(
string="Create Invoiced Sale Orders",
default=True,
help="If checked, the cashier will have the possibility to create"
" a confirmed sale Order, based on the current draft PoS Order.\n"
" the according picking will be marked as delivered.\n"
" The Invoice will be generated and confirm.\n"
" Only invoice payment process will be possible.",
)
@api.depends(
"iface_create_draft_sale_order",
"iface_create_confirmed_sale_order",
"iface_create_delivered_sale_order",
"iface_create_invoiced_sale_order",
)
def _compute_iface_create_sale_order(self):
for config in self:
config.iface_create_sale_order = any(
[
config.iface_create_draft_sale_order,
config.iface_create_confirmed_sale_order,
config.iface_create_delivered_sale_order,
config.iface_create_invoiced_sale_order,
]
)

View file

@ -0,0 +1,25 @@
# Copyright (C) 2017 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
pos_iface_create_draft_sale_order = fields.Boolean(
related="pos_config_id.iface_create_draft_sale_order", readonly=False
)
pos_iface_create_confirmed_sale_order = fields.Boolean(
related="pos_config_id.iface_create_confirmed_sale_order", readonly=False
)
pos_iface_create_delivered_sale_order = fields.Boolean(
related="pos_config_id.iface_create_delivered_sale_order", readonly=False
)
pos_iface_create_invoiced_sale_order = fields.Boolean(
related="pos_config_id.iface_create_invoiced_sale_order", readonly=False
)

View file

@ -0,0 +1,58 @@
# Copyright (C) 2017 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import Command, _, api, models
class SaleOrder(models.Model):
_inherit = "sale.order"
@api.model
def _prepare_from_pos(self, order_data):
PosSession = self.env["pos.session"]
session = PosSession.browse(order_data["pos_session_id"])
SaleOrderLine = self.env["sale.order.line"]
order_lines = [
Command.create(SaleOrderLine._prepare_from_pos(sequence, line_data[2]))
for sequence, line_data in enumerate(order_data["lines"], start=1)
]
return {
"partner_id": order_data["partner_id"],
"origin": _("Point of Sale %s") % (session.name),
"client_order_ref": order_data["name"],
"user_id": order_data["user_id"],
"pricelist_id": order_data["pricelist_id"],
"fiscal_position_id": order_data["fiscal_position_id"],
"order_line": order_lines,
"warehouse_id": session.config_id.picking_type_id.warehouse_id.id,
}
@api.model
def create_order_from_pos(self, order_data, action):
# Create Draft Sale order
order_vals = self._prepare_from_pos(order_data)
sale_order = self.with_context(
pos_order_lines_data=[x[2] for x in order_data.get("lines", [])]
).create(order_vals)
sale_order._recompute_taxes()
# Confirm Sale Order
if action in ["confirmed", "delivered", "invoiced"]:
sale_order.action_confirm()
# mark picking as delivered
if action in ["delivered", "invoiced"]:
# Mark all moves are delivered
for move in sale_order.mapped("picking_ids.move_ids_without_package"):
move.quantity_done = move.product_uom_qty
sale_order.mapped("picking_ids").button_validate()
if action in ["invoiced"]:
# Create and confirm invoices
invoices = sale_order._create_invoices()
invoices.action_post()
return {
"sale_order_id": sale_order.id,
}

View file

@ -0,0 +1,31 @@
# Copyright (C) 2017 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, models
class SaleOrderLine(models.Model):
_inherit = "sale.order.line"
@api.model
def _prepare_from_pos(self, sequence, order_line_data):
return {
"sequence": sequence,
"product_id": order_line_data["product_id"],
"product_uom_qty": order_line_data["qty"],
"discount": order_line_data["discount"],
"price_unit": order_line_data["price_unit"],
"tax_id": order_line_data["tax_ids"],
}
def _get_sale_order_line_multiline_description_sale(self):
res = super()._get_sale_order_line_multiline_description_sale()
for sequence, line_data in enumerate(
self.env.context.get("pos_order_lines_data", []), start=1
):
if line_data.get("customer_note", False) and self.sequence == sequence:
res += f"\n{line_data.get('customer_note')}"
return res

View file

@ -0,0 +1,6 @@
* Go to Point Of Sale / Configuration / Point of Sale
* Check the box 'Create Sale Orders'
* Select the desired default behaviour
.. figure:: ../static/description/res_config_settings_form.png
:width: 800 px

View file

@ -0,0 +1 @@
* Sylvain LE GAL (https://www.twitter.com/legalsylvain)

View file

@ -0,0 +1,14 @@
This module extends the functionality of point of sale to allow sale orders
creation from the Point of Sale.
In the POS UI, button has been added to create a sale order and discard
the current POS order.
This module is usefull in many cases, for exemple :
* take orders with a very simple interface
* if you have some customers that come every day in your shop, but want to
have a unique invoice at the end of the month. With that module, you can
create a sale order and deliver products every time to keep your stock value
correct, and to create a unique invoice, when you want.

View file

@ -0,0 +1,2 @@
* Some prepare functions are available in the ``sale.order`` model and
``sale.order.line`` models to overload the creation of the sale order.

View file

@ -0,0 +1,26 @@
* Open your Point of sale
* Create a new order and select products
* Select a customer
* Click on the "Create Order" button
.. figure:: ../static/description/pos_frontend_button.png
Four options are available (depending on the PoS settings):
* **Create a draft Order**
A new sale order in a draft mode will be created that can be changed later.
* **Create a Confirmed Order**
A new sale order will be created and confirmed.
* **Create Delivered Sale Order**
A new sale order will be created and confirmed.
the associated picking will be marked as delivered.
* **Create Invoiced Sale Order**
A new sale order will be created and confirmed.
the associated picking will be marked as delivered.
An invoice will be created and confirmed.
.. figure:: ../static/description/pos_frontend_popup.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View file

@ -0,0 +1,492 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
<img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
</a>
<div class="section" id="pos-order-to-sale-order">
<h1>PoS Order To Sale Order</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:3cf0b87328c9582b539d1b325d7fc33161796bd89fb113acafaa245c3ea7b701
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/pos/tree/16.0/pos_order_to_sale_order"><img alt="OCA/pos" src="https://img.shields.io/badge/github-OCA%2Fpos-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/pos-16-0/pos-16-0-pos_order_to_sale_order"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/pos&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module extends the functionality of point of sale to allow sale orders
creation from the Point of Sale.</p>
<p>In the POS UI, button has been added to create a sale order and discard
the current POS order.</p>
<p>This module is usefull in many cases, for exemple :</p>
<ul class="simple">
<li>take orders with a very simple interface</li>
<li>if you have some customers that come every day in your shop, but want to
have a unique invoice at the end of the month. With that module, you can
create a sale order and deliver products every time to keep your stock value
correct, and to create a unique invoice, when you want.</li>
</ul>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="toc-entry-1">Configuration</a></li>
<li><a class="reference internal" href="#usage" id="toc-entry-2">Usage</a></li>
<li><a class="reference internal" href="#development" id="toc-entry-3">Development</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-4">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-5">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-6">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-7">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-8">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h2><a class="toc-backref" href="#toc-entry-1">Configuration</a></h2>
<ul class="simple">
<li>Go to Point Of Sale / Configuration / Point of Sale</li>
<li>Check the box Create Sale Orders</li>
<li>Select the desired default behaviour</li>
</ul>
<div class="figure">
<img alt="https://raw.githubusercontent.com/OCA/pos/16.0/pos_order_to_sale_order/static/description/res_config_settings_form.png" src="https://raw.githubusercontent.com/OCA/pos/16.0/pos_order_to_sale_order/static/description/res_config_settings_form.png" style="width: 800px;" />
</div>
</div>
<div class="section" id="usage">
<h2><a class="toc-backref" href="#toc-entry-2">Usage</a></h2>
<ul class="simple">
<li>Open your Point of sale</li>
<li>Create a new order and select products</li>
<li>Select a customer</li>
<li>Click on the “Create Order” button</li>
</ul>
<div class="figure">
<img alt="https://raw.githubusercontent.com/OCA/pos/16.0/pos_order_to_sale_order/static/description/pos_frontend_button.png" src="https://raw.githubusercontent.com/OCA/pos/16.0/pos_order_to_sale_order/static/description/pos_frontend_button.png" />
</div>
<p>Four options are available (depending on the PoS settings):</p>
<ul class="simple">
<li><strong>Create a draft Order</strong>
A new sale order in a draft mode will be created that can be changed later.</li>
<li><strong>Create a Confirmed Order</strong>
A new sale order will be created and confirmed.</li>
<li><strong>Create Delivered Sale Order</strong>
A new sale order will be created and confirmed.
the associated picking will be marked as delivered.</li>
<li><strong>Create Invoiced Sale Order</strong>
A new sale order will be created and confirmed.
the associated picking will be marked as delivered.
An invoice will be created and confirmed.</li>
</ul>
<div class="figure">
<img alt="https://raw.githubusercontent.com/OCA/pos/16.0/pos_order_to_sale_order/static/description/pos_frontend_popup.png" src="https://raw.githubusercontent.com/OCA/pos/16.0/pos_order_to_sale_order/static/description/pos_frontend_popup.png" />
</div>
</div>
<div class="section" id="development">
<h2><a class="toc-backref" href="#toc-entry-3">Development</a></h2>
<ul class="simple">
<li>Some prepare functions are available in the <tt class="docutils literal">sale.order</tt> model and
<tt class="docutils literal">sale.order.line</tt> models to overload the creation of the sale order.</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h2><a class="toc-backref" href="#toc-entry-4">Bug Tracker</a></h2>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/pos/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/pos/issues/new?body=module:%20pos_order_to_sale_order%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h2><a class="toc-backref" href="#toc-entry-5">Credits</a></h2>
<div class="section" id="authors">
<h3><a class="toc-backref" href="#toc-entry-6">Authors</a></h3>
<ul class="simple">
<li>GRAP</li>
</ul>
</div>
<div class="section" id="contributors">
<h3><a class="toc-backref" href="#toc-entry-7">Contributors</a></h3>
<ul class="simple">
<li>Sylvain LE GAL (<a class="reference external" href="https://www.twitter.com/legalsylvain">https://www.twitter.com/legalsylvain</a>)</li>
</ul>
</div>
<div class="section" id="maintainers">
<h3><a class="toc-backref" href="#toc-entry-8">Maintainers</a></h3>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/legalsylvain"><img alt="legalsylvain" src="https://github.com/legalsylvain.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/pos/tree/16.0/pos_order_to_sale_order">OCA/pos</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -0,0 +1,25 @@
/*
Copyright (C) 2022-Today GRAP (http://www.grap.coop)
@author Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
*/
.pos .popup-create-sale-order table {
width: 100%;
}
.pos .popup-create-sale-order .button.button-sale-order {
width: 100%;
margin-right: 0px;
text-align: left;
}
.pos .popup-create-sale-order .button.button-sale-order .icon-containers {
margin-left: 10px;
width: 80px;
display: inline-block;
}
.pos .popup-create-sale-order .button.button-sale-order span {
margin-left: 10px;
}

View file

@ -0,0 +1,30 @@
odoo.define("point_of_sale.CreateOrderButton", function (require) {
"use strict";
const PosComponent = require("point_of_sale.PosComponent");
const ProductScreen = require("point_of_sale.ProductScreen");
const Registries = require("point_of_sale.Registries");
class CreateOrderButton extends PosComponent {
async onClick() {
await this.showPopup("CreateOrderPopup", {});
}
}
CreateOrderButton.template = "CreateOrderButton";
ProductScreen.addControlButton({
component: CreateOrderButton,
condition: function () {
return (
this.env.pos.config.iface_create_sale_order &&
this.env.pos.get_order().get_partner() &&
this.env.pos.get_order().get_orderlines().length !== 0
);
},
});
Registries.Component.add(CreateOrderButton);
return CreateOrderButton;
});

View file

@ -0,0 +1,65 @@
odoo.define("point_of_sale.CreateOrderPopup", function (require) {
"use strict";
const AbstractAwaitablePopup = require("point_of_sale.AbstractAwaitablePopup");
const Registries = require("point_of_sale.Registries");
const framework = require("web.framework");
class CreateOrderPopup extends AbstractAwaitablePopup {
setup() {
super.setup();
this.createOrderClicked = false;
}
async createDraftSaleOrder() {
await this._actionCreateSaleOrder("draft");
}
async createConfirmedSaleOrder() {
await this._actionCreateSaleOrder("confirmed");
}
async createDeliveredSaleOrder() {
await this._actionCreateSaleOrder("delivered");
}
async createInvoicedSaleOrder() {
await this._actionCreateSaleOrder("invoiced");
}
async _actionCreateSaleOrder(order_state) {
// Create Sale Order
await this._createSaleOrder(order_state);
// Delete current order
const current_order = this.env.pos.get_order();
this.env.pos.removeOrder(current_order);
this.env.pos.add_new_order();
// Close popup
return await super.confirm();
}
async _createSaleOrder(order_state) {
const current_order = this.env.pos.get_order();
framework.blockUI();
return await this.env.services
.rpc({
model: "sale.order",
method: "create_order_from_pos",
args: [current_order.export_as_JSON(), order_state],
})
.catch(function (error) {
throw error;
})
.finally(function () {
framework.unblockUI();
});
}
}
CreateOrderPopup.template = "CreateOrderPopup";
Registries.Component.add(CreateOrderPopup);
return CreateOrderPopup;
});

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates id="template" xml:space="preserve">
<t t-name="CreateOrderButton" owl="1">
<span class="control-button" t-on-click="onClick">
<i class="fa fa-file-text" />
<span> </span>
<span>Create Order</span>
</span>
</t>
</templates>

View file

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates id="template" xml:space="preserve">
<t t-name="CreateOrderPopup" owl="1">
<div class="popup popup-create-sale-order">
<header>
<div class="title">Create Order</div>
</header>
<main class="body">
<table>
<tbody>
<tr t-if="env.pos.config.iface_create_draft_sale_order">
<td>
<div
class="button button-sale-order"
t-on-click="createDraftSaleOrder"
>
<span class="icon-containers">
<i class="fa fa-file-o" role="img" />
</span>
<span>Create Draft Sale Order</span>
</div>
</td>
</tr>
<tr t-if="env.pos.config.iface_create_confirmed_sale_order">
<td>
<div
class="button button-sale-order"
t-on-click="createConfirmedSaleOrder"
>
<span class="icon-containers">
<i class="fa fa-file-text-o" role="img" />
</span>
<span>Create Confirmed Sale Order</span>
</div>
</td>
</tr>
<tr t-if="env.pos.config.iface_create_delivered_sale_order">
<td>
<div
class="button button-sale-order"
t-on-click="createDeliveredSaleOrder"
>
<span class="icon-containers">
<i class="fa fa-file-text-o" role="img" /> +
<i class="fa fa-shopping-cart" role="img" />
</span>
<span>Create Delivered Sale Order</span>
</div>
</td>
</tr>
<tr t-if="env.pos.config.iface_create_invoiced_sale_order">
<td>
<div
class="button button-sale-order"
t-on-click="createInvoicedSaleOrder"
>
<span class="icon-containers">
<i class="fa fa-file-text-o" role="img" /> +
<i class="fa fa-shopping-cart" role="img" /> +
<i class="fa fa-usd" role="img" />
</span>
<span>Create Invoiced Sale Order</span>
</div>
</td>
</tr>
</tbody>
</table>
</main>
<footer class="footer">
<div class="button" t-on-click="cancel">Discard</div>
</footer>
</div>
</t>
</templates>

View file

@ -0,0 +1,35 @@
/** @odoo-module **/
/*
Copyright (C) 2022-Today GRAP (http://www.grap.coop)
@author Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
*/
import {getSteps, startSteps} from "point_of_sale.tour.utils";
import {PosOrderToSaleOrder} from "./helpers/PosOrderToSaleOrderMethods.esm";
import {ProductScreen} from "point_of_sale.tour.ProductScreenTourMethods";
import {TextAreaPopup} from "point_of_sale.tour.TextAreaPopupTourMethods";
import Tour from "web_tour.tour";
startSteps();
ProductScreen.do.confirmOpeningPopup();
ProductScreen.do.clickHomeCategory();
ProductScreen.exec.addOrderline("Whiteboard Pen", "1");
ProductScreen.exec.addOrderline("Wall Shelf Unit", "1");
ProductScreen.do.clickOrderlineCustomerNoteButton();
TextAreaPopup.check.isShown();
TextAreaPopup.do.inputText("Product Note");
TextAreaPopup.do.clickConfirm();
ProductScreen.do.clickPartnerButton();
ProductScreen.do.clickCustomer("Addison Olson");
PosOrderToSaleOrder.do.clickCreateOrderButton();
PosOrderToSaleOrder.do.clickCreateInvoicedOrderButton();
ProductScreen.check.isShown();
Tour.register("PosOrderToSaleOrderTour", {test: true, url: "/pos/ui"}, getSteps());

View file

@ -0,0 +1,38 @@
/** @odoo-module **/
/*
Copyright 2024 Camptocamp SA (https://www.camptocamp.com).
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
*/
import {Do} from "point_of_sale.tour.ProductScreenTourMethods";
import {createTourMethods} from "point_of_sale.tour.utils";
class DoExt extends Do {
clickCreateOrderButton() {
return [
{
content: "Click on 'Create Order' Button",
trigger:
".control-buttons .control-button span:contains('Create Order')",
},
];
}
clickCreateInvoicedOrderButton() {
return [
{
content: "Click on 'Create invoiced order' Button",
trigger:
".popup-create-sale-order .button-sale-order span:contains('Create Invoiced Sale Order')",
},
// Wait for the request to complete
{
content: "Wait for popup to be closed",
trigger: "body:not(:has(div.popup-create-sale-order:not(.oe_hidden))",
run: () => {}, // eslint-disable-line no-empty-function
},
];
}
}
const methods = createTourMethods("PosOrderToSaleOrder", DoExt);
export const PosOrderToSaleOrder = methods.PosOrderToSaleOrder;

View file

@ -0,0 +1 @@
from . import test_module

View file

@ -0,0 +1,64 @@
# Copyright (C) 2022-Today GRAP (http://www.grap.coop)
# @author Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
from odoo.tests import tagged
from odoo.addons.point_of_sale.tests.test_frontend import TestPointOfSaleHttpCommon
@tagged("post_install", "-at_install")
class TestUi(TestPointOfSaleHttpCommon):
def test_pos_order_to_sale_order(self):
self.main_pos_config.open_ui()
# Make the test compatible with pos_minimize_menu
if "iface_important_buttons" in self.main_pos_config._fields:
self.main_pos_config.iface_important_buttons = ",".join(
[
"CreateOrderButton",
"OrderlineCustomerNoteButton",
]
)
before_orders = self.env["sale.order"].search(
[("partner_id", "=", self.env.ref("base.res_partner_address_31").id)],
order="id",
)
self.start_tour(
f"/pos/ui?config_id={self.main_pos_config.id}",
"PosOrderToSaleOrderTour",
login="accountman",
)
after_orders = self.env["sale.order"].search(
[("partner_id", "=", self.env.ref("base.res_partner_address_31").id)],
order="id",
)
self.assertEqual(len(before_orders) + 1, len(after_orders))
order = after_orders[-1]
self.assertEqual(order.amount_total, 5.18, "Total Amount must be equal to 5.18")
self.assertEqual(order.state, "sale", "Order state must be equal to 'sale'")
self.assertEqual(
order.delivery_status, "full", "Delivery status must be equal to 'full'"
)
self.assertEqual(
order.invoice_status,
"invoiced",
"Invoice status must be equal to 'invoiced'",
)
self.assertNotIn(
"Product Note",
order.order_line[0].name,
"'Product Note' must contains in sale order line description",
)
self.assertIn(
"Product Note",
order.order_line[1].name,
"'Product Note' must not contains in sale order line description",
)

View file

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_res_config_settings_form" model="ir.ui.view">
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="point_of_sale.res_config_settings_view_form" />
<field name="arch" type="xml">
<xpath expr="//div[@id='pos_technical_section']" position="after">
<h2 name="create_sale_order">Sale Order Creation</h2>
<div class="row mt16 o_settings_container">
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="pos_iface_create_draft_sale_order" />
</div>
<div class="o_setting_right_pane">
<label for="pos_iface_create_draft_sale_order" />
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="pos_iface_create_confirmed_sale_order" />
</div>
<div class="o_setting_right_pane">
<label for="pos_iface_create_confirmed_sale_order" />
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="pos_iface_create_delivered_sale_order" />
</div>
<div class="o_setting_right_pane">
<label for="pos_iface_create_delivered_sale_order" />
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="pos_iface_create_invoiced_sale_order" />
</div>
<div class="o_setting_right_pane">
<label for="pos_iface_create_invoiced_sale_order" />
</div>
</div>
</div>
</xpath>
</field>
</record>
</odoo>

View file

@ -0,0 +1,43 @@
[project]
name = "odoo-bringout-oca-pos-pos_order_to_sale_order"
version = "16.0.0"
description = "PoS Order To Sale Order - Odoo addon"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-ocb-point_of_sale>=16.0.0",
"odoo-bringout-oca-ocb-sale>=16.0.0",
"requests>=2.25.1"
]
readme = "README.md"
requires-python = ">= 3.11"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Office/Business",
]
[project.urls]
homepage = "https://github.com/bringout/0"
repository = "https://github.com/bringout/0"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["pos_order_to_sale_order"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]