sale
Esta página combina orientación editorial con evidencia extraída de la rama oficial indicada. Pruebe siempre el flujo con sus permisos y configuración.
Propósito
El módulo sale incorpora o amplía funciones relacionadas con sale. Su alcance real se determina por los modelos, acciones y dependencias documentados a continuación; no debe activarse únicamente por su nombre.
Descripción oficial de la rama (idioma original)
The Sale Module helps organise and manage sales made by the company. It adds the concept of a sale to Tryton and allows it to be tracked through its states from draft to done. It also oversees the creation of customer shipments and invoices for the sales, and allows reports to be generated that contain aggregated sales figures.
El análisis encontró 11 archivos Python, 49 archivos XML, 42 vistas, 90 acciones, 8 menús y 1 informes.
Guía funcional para el usuario
A quién le sirve
Este módulo interesa a las personas responsables de los procesos relacionados con sale, a quienes configuran la compañía y a quienes revisan sus resultados. Los administradores deben participar cuando se activen dependencias, permisos o secuencias.
Qué podrá hacer
Al finalizar la configuración podrá reconocer los registros que aporta sale, ejecutar sus acciones con el estado correcto, producir sus informes y comprender qué información termina compartiendo con otros módulos.
Requisitos y preparación
Antes de activarlo confirme la compañía, moneda, usuarios y grupos aplicables. Instale y configure primero sus dependencias obligatorias. Si existen datos reales, ensaye la activación y actualización sobre una copia restaurada.
Active primero las dependencias, revise la configuración de la compañía y ensaye el flujo completo antes de usarlo en producción.
Dependencias obligatorias
account— debe estar instalado y configurado antes de probar este módulo.account_invoice— debe estar instalado y configurado antes de probar este módulo.account_invoice_stock— debe estar instalado y configurado antes de probar este módulo.account_product— debe estar instalado y configurado antes de probar este módulo.company— debe estar instalado y configurado antes de probar este módulo.country— debe estar instalado y configurado antes de probar este módulo.currency— debe estar instalado y configurado antes de probar este módulo.ir— debe estar instalado y configurado antes de probar este módulo.party— debe estar instalado y configurado antes de probar este módulo.product— debe estar instalado y configurado antes de probar este módulo.res— debe estar instalado y configurado antes de probar este módulo.stock— debe estar instalado y configurado antes de probar este módulo.
Integraciones opcionales
- —
Configuración inicial recomendada
- Active el módulo y vuelva a iniciar la sesión para cargar menús y permisos.
- Revise las nuevas opciones de configuración de compañía y los valores por defecto.
- Asigne grupos a usuarios de prueba aplicando mínimo privilegio.
- Cree datos maestros pequeños y verificables antes de importar información masiva.
- Ejecute un caso completo desde borrador hasta su estado final y revise los registros relacionados.
Objetos y conceptos del módulo
- account.invoice: agrupa 2 modelo(s), entre ellos
account.invoice,account.invoice.line. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - party.erase: agrupa 1 modelo(s), entre ellos
party.erase. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - party.replace: agrupa 1 modelo(s), entre ellos
party.replace. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - product.configuration: agrupa 2 modelo(s), entre ellos
product.configuration,product.configuration.default_lead_time. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - product.product: agrupa 1 modelo(s), entre ellos
product.product. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - product.sale: agrupa 1 modelo(s), entre ellos
product.sale.context. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - product.template: agrupa 1 modelo(s), entre ellos
product.template. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - sale.configuration: agrupa 3 modelo(s), entre ellos
sale.configuration,sale.configuration.sale_method,sale.configuration.sequence. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - sale.handle: agrupa 4 modelo(s), entre ellos
sale.handle.invoice.exception,sale.handle.invoice.exception.ask,sale.handle.shipment.exception,sale.handle.shipment.exception.ask. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - sale.line: agrupa 1 modelo(s), entre ellos
sale.line. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - sale.line-account: agrupa 1 modelo(s), entre ellos
sale.line-account.tax. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - sale.line-ignored-stock: agrupa 1 modelo(s), entre ellos
sale.line-ignored-stock.move. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - sale.line-recreated-stock: agrupa 1 modelo(s), entre ellos
sale.line-recreated-stock.move. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - sale.modify_header: agrupa 1 modelo(s), entre ellos
sale.modify_header. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - sale.open_customer: agrupa 1 modelo(s), entre ellos
sale.open_customer. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - sale.reporting: agrupa 14 modelo(s), entre ellos
sale.reporting.category,sale.reporting.category.time_series,sale.reporting.category.tree,sale.reporting.context,sale.reporting.country. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - sale.return_sale: agrupa 2 modelo(s), entre ellos
sale.return_sale,sale.return_sale.start. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - sale.sale: agrupa 1 modelo(s), entre ellos
sale.sale. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - sale.sale-ignored-account: agrupa 1 modelo(s), entre ellos
sale.sale-ignored-account.invoice. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - sale.sale-recreated-account: agrupa 1 modelo(s), entre ellos
sale.sale-recreated-account.invoice. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - stock.move: agrupa 1 modelo(s), entre ellos
stock.move. Estos registros forman la información que el usuario consulta o modifica durante el proceso. - stock.shipment: agrupa 2 modelo(s), entre ellos
stock.shipment.out,stock.shipment.out.return. Estos registros forman la información que el usuario consulta o modifica durante el proceso.
Flujo de trabajo habitual
- Seleccione la compañía y fecha correctas antes de crear el documento.
- Complete primero los datos maestros y luego las líneas o detalles.
- Use los botones del formulario para cambiar de estado; guardar no equivale a validar o contabilizar.
- Revise advertencias, totales, documentos relacionados y trazabilidad.
- Genere el informe y compare su contenido con el registro antes de entregarlo.
Acciones, estados y asistentes
cancel— acción o transición que inicia cancel. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.confirm— acción o transición que inicia confirm. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.draft— acción o transición que inicia draft. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.handle_invoice_exception— acción o transición que inicia handle invoice exception. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.handle_shipment_exception— acción o transición que inicia handle shipment exception. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.modify_header— acción o transición que inicia modify header. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.process— acción o transición que inicia process. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.quote— acción o transición que inicia quote. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.cancelled— acción o transición que inicia cancelled. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.confirmed— acción o transición que inicia confirmed. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.done— acción o transición que inicia done. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.processing— acción o transición que inicia processing. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.quotation— acción o transición que inicia quotation. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.received— acción o transición que inicia received. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.sale.handle.invoice.exception— asistente que reúne datos y ejecuta sale › handle › invoice › exception. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.sale.handle.shipment.exception.ask— asistente que reúne datos y ejecuta sale › handle › shipment › exception › ask. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.sale.modify_header— asistente que reúne datos y ejecuta sale › modify header. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.sale.open_customer— asistente que reúne datos y ejecuta sale › open customer. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.sale.reporting.region.open— asistente que reúne datos y ejecuta sale › reporting › region › open. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.sale.return_sale.start— asistente que reúne datos y ejecuta sale › return sale › start. Verifique permisos, estado actual y registros relacionados antes de ejecutarla.
Controles antes de producción
- Defina quién crea, revisa, confirma, cancela y consulta.
- Pruebe períodos cerrados, usuarios sin permisos y datos incompletos.
- Verifique numeración, moneda, redondeo y zona horaria cuando correspondan.
- Documente cómo corregir un error sin editar directamente la base de datos.
- Incluya sus tablas y archivos en el procedimiento de copia y restauración.
Diagnóstico y resolución de problemas
- Si no aparece el menú, compruebe activación, actualización de la lista de módulos, grupos y nueva sesión.
- Si un campo no acepta un valor, revise su dominio, compañía, estado y dependencias configuradas.
- Si un botón está oculto o deshabilitado, revise permisos y transición válida; no modifique el estado con SQL.
- Si los resultados no coinciden, reproduzca un caso mínimo y compare registros relacionados antes y después.
- Conserve el traceback completo, versión, módulos activos y datos mínimos para diagnosticar un error.
Guía para desarrolladores
Arquitectura y puntos de extensión
El paquete contiene 55 clases Python y declara o extiende 44 modelos. Utiliza Boolean, Char, Date, Float, Function, Integer, Many2Many, Many2One, MultiValue, Numeric, One2Many, Reference, Selection, Text, TimeDelta. Los desarrolladores deben localizar primero si una clase crea un modelo nuevo o usa PoolMeta para extender uno existente, conservar las llamadas a super() y no duplicar reglas disponibles en las dependencias.
Modelos registrados o extendidos
account.invoiceaccount.invoice.lineparty.eraseparty.replaceproduct.configurationproduct.configuration.default_lead_timeproduct.productproduct.sale.contextproduct.templatesale.configurationsale.configuration.sale_methodsale.configuration.sequencesale.handle.invoice.exceptionsale.handle.invoice.exception.asksale.handle.shipment.exceptionsale.handle.shipment.exception.asksale.linesale.line-account.taxsale.line-ignored-stock.movesale.line-recreated-stock.movesale.modify_headersale.open_customersale.reporting.categorysale.reporting.category.time_seriessale.reporting.category.treesale.reporting.contextsale.reporting.countrysale.reporting.country.subdivisionsale.reporting.country.subdivision.time_seriessale.reporting.country.time_seriessale.reporting.customersale.reporting.customer.time_seriessale.reporting.productsale.reporting.product.time_seriessale.reporting.regionsale.reporting.region.opensale.return_salesale.return_sale.startsale.salesale.sale-ignored-account.invoicesale.sale-recreated-account.invoicestock.movestock.shipment.outstock.shipment.out.return
Tipos de campos utilizados
BooleanCharDateFloatFunctionIntegerMany2ManyMany2OneMultiValueNumericOne2ManyReferenceSelectionTextTimeDelta
Clases y métodos públicos detectados
Clases: Abstract, AbstractTimeseries, Category, CategoryMixin, CategoryTimeseries, CategoryTree, Configuration, ConfigurationSaleMethod, ConfigurationSequence, Context, Country, CountryMixin, CountryTimeseries, Customer, CustomerMixin, CustomerTimeseries, DefaultLeadTime, Erase, HandleInvoiceException, HandleInvoiceExceptionAsk, HandleShipmentException, HandleShipmentExceptionAsk, Invoice, Line, ModifyHeader, ModifyHeaderStateView, Move, OpenCustomer, OpenRegion, PartyLocationError, Product, ProductMixin, ProductTimeseries, Region, Replace, ReturnSale, ReturnSaleStart, Sale, SaleConfirmError, SaleContext, SaleIgnoredInvoice, SaleLine, SaleLineIgnoredMove, SaleLineRecreatedMove, SaleLineTax, SaleQuotationError, SaleRecreatedInvoice, SaleReport, SaleValidationError, ShipmentOut, ShipmentOutReturn, Subdivision, SubdivisionMixin, SubdivisionTimeseries, Template
Métodos: cancel(), check_erase_company(), check_for_quotation(), check_method(), check_origin_types(), compute_shipping_date(), compute_taxes(), compute_unit_price(), confirm(), copy(), create_invoice(), create_shipment(), default(), default_ask(), default_company(), default_currency(), default_currency_digits(), default_default_lead_time(), default_from_date(), default_invoice_method(), default_invoice_state(), default_locations(), default_payment_term(), default_period(), default_sale_invoice_method(), default_sale_sequence(), default_sale_shipment_method(), default_shipment_method(), default_shipment_state(), default_start(), default_state(), default_to_date(), default_type(), default_unit_digits(), default_warehouse(), delete(), do(), do_open_(), do_return_(), done(), draft(), execute(), fields_to_replace(), full_number(), func(), get_amount(), get_context(), get_cost_price(), get_currency(), get_currency_digits(), get_from_location(), get_invoice_line(), get_invoice_state(), get_invoices(), get_move(), get_move_done(), get_move_exception(), get_name(), get_origin(), get_rec_name(), get_resources_to_copy(), get_sale(), get_sale_exception_state(), get_sale_price(), get_sale_price_uom(), get_sale_states(), get_sales(), get_shipment_state(), get_tax_amount(), get_to_location(), get_total(), get_trend(), get_view(), get_warehouse(), handle_invoice_exception(), handle_shipment_exception(), is_done(), lead_time_used(), method(), modify_header(), multivalue_model(), on_change(), on_change_company(), on_change_default_uom(), on_change_invoice_party(), on_change_lines(), on_change_party(), on_change_product(), on_change_quantity(), on_change_shipment_party(), on_change_taxes(), on_change_unit(), on_change_with_amount(), on_change_with_company(), on_change_with_currency(), on_change_with_currency_digits(), on_change_with_party_lang(), on_change_with_product_uom_category(), on_change_with_sale_state(), on_change_with_shipping_date()
Mapa del código
Se detectaron 11 archivos Python, 49 XML y 0 archivos explícitos de acceso. Los XML conectan modelos con vistas, menús, acciones e informes; los CSV de acceso establecen permisos iniciales.
__init__.pyconfiguration.pyconfiguration.xmldoc/conf.pyexceptions.pyinvoice.pymessage.xmlparty.pyparty.xmlproduct.pyproduct.xmlsale.pysale.xmlsale_reporting.pysale_reporting.xmlsetup.pystock.pystock.xmlview/configuration_form.xmlview/handle_invoice_exception_ask_form.xmlview/handle_shipment_exception_ask_form.xmlview/modify_header_form.xmlview/move_list_shipment.xmlview/party_form.xmlview/product_configuration_form.xmlview/product_list_sale_line.xmlview/product_sale_context_form.xmlview/return_sale_start_form.xmlview/sale_form.xmlview/sale_line_form.xmlview/sale_line_tree.xmlview/sale_line_tree_sequence.xmlview/sale_reporting_category_list.xmlview/sale_reporting_category_time_series_graph_number.xmlview/sale_reporting_category_time_series_graph_revenue.xmlview/sale_reporting_category_time_series_list.xmlview/sale_reporting_category_tree.xmlview/sale_reporting_context_form.xmlview/sale_reporting_country_subdivision_time_series_graph_number.xmlview/sale_reporting_country_subdivision_time_series_graph_revenue.xmlview/sale_reporting_country_subdivision_time_series_list.xmlview/sale_reporting_country_time_series_graph_number.xmlview/sale_reporting_country_time_series_graph_revenue.xmlview/sale_reporting_country_time_series_list.xmlview/sale_reporting_customer_graph_number.xmlview/sale_reporting_customer_graph_revenue.xmlview/sale_reporting_customer_list.xmlview/sale_reporting_customer_time_series_graph_number.xmlview/sale_reporting_customer_time_series_graph_revenue.xmlview/sale_reporting_customer_time_series_list.xml
Plan de pruebas
- Activación en una base vacía y actualización desde la revisión anterior.
- Creación, modificación, copia y eliminación según estado y permisos.
- Cada botón, transición y asistente con casos válidos e inválidos.
- Reglas multicompañía, traducciones, zonas horarias y monedas aplicables.
- Instalación conjunta con dependencias obligatorias e integraciones opcionales.
- Copia y restauración de registros, adjuntos e informes producidos.
Compatibilidad y actualización
Mantenga servidor y módulos en la serie 6.0. Antes de actualizar compare tryton.cfg, migraciones de __register__, cambios de estados, XML IDs y permisos. Una compilación exitosa no reemplaza una migración ensayada ni la conciliación funcional de datos.
Evidencia documental oficial
Temas encontrados: Design · Sale · Reports · Sale Report · Wizards · Handle Shipment Exception · Handle Invoice Exception · Modify Header · Return Sale · Sale Context · Sale Reporting · By Customer · By Product · By Category · By Region · By Country · By Subdivision · Configuration · Sale Module · Usage · Listing customers · Making products salable · Finding sale prices and availability · Creating a sales order · Changing a sales order · Shipping a sale · Part shipments · Invoicing a sale · Handling shipment and invoice exceptions · Finishing a sale · Getting sales data · Cancelling sales · Handling customer returns
-
- doc/design.rst: The Sale Module introduces the concepts that are required to manage sales. It also extends existing concepts so sales become an fully integrated part of the system.
-
- doc/index.rst: The Sale Module helps organise and manage sales made by the company. It adds the concept of a sale to Tryton and allows it to be tracked through its states from draft to done. It also oversees the creation of customer shipments and invoices for the sales, and allows reports to be generated that contain aggregated sales figures.
-
- doc/usage/index.rst: Configuration, management, and reporting tasks relating to sales can be found under the [
Sales] main menu item.
- doc/usage/index.rst: Configuration, management, and reporting tasks relating to sales can be found under the [
-
- doc/usage/presales.rst: In Tryton, by definition, the
Parties <party:model-party.party>that have boughtProducts <product:concept-product>from yourCompany <company:model-company.company>are its customers. The Sale Module lets you get a list of these from the [Party --> Parties --> Parties associated to Sales] main menu item.
- doc/usage/presales.rst: In Tryton, by definition, the
-
- doc/usage/process.rst: Creating a new sales order is simply a matter of creating a new
Sale <model-sale.sale>and adding the lines that are required. Most of the fields are optional or have sensible default values.
- doc/usage/process.rst: Creating a new sales order is simply a matter of creating a new
-
- doc/usage/reporting.rst: You can analyse aggregated sales data using the items found under the [
Sales --> Reporting] main menu item. TheseSales Reports <concept-sale.reporting>allow you to view sales grouped by a range of different factors.
- doc/usage/reporting.rst: You can analyse aggregated sales data using the items found under the [
-
- doc/usage/returns.rst: You can easily cancel
Sales <model-sale.sale>that are not yet confirmed using theCancelbutton.
- doc/usage/returns.rst: You can easily cancel