# dprod Archivos de inclusión requerido. - `functions.dkh` - `serialize.dkh` - `dbr.dkh` - `inventario/movimientos.dkh` ## Producción y manufactura
### Variables globales #### @erp.dprod.show_log Imprimir los resultados de las operaciones en la consola/terminal, útil para depurar. Tipo: `Boolean`, Predeterminado: `true` #### @erp.dprod.only_log Indica si únicamente se imprimen los resultados, no realiza operaciones. Tipo: `Boolean`, Predeterminado: `false` #### @erp.dprod.SIN_CANTIDADES_SUBJETIVAS No se considerarán cantidades subjetivas. Tipo: `Boolean`, Predeterminado: `false` #### @erp.dprod.NP_SUBRECETAS No se producirán subrecetas. Tipo: `Boolean`, Predeterminado: `false` #### @erp.dprod.PRODUCIR_SIEMPRE_ADICIONALES Aun en producción por demanda, producirá la receta si tiene adicionales. Tipo: `Boolean`, Predeterminado: `true` #### @erp.dprod.DECS_VOLUMEN Decimales en volúmenes. Tipo: `integer`, Predeterminado: `5` **Nota:** De ser posible, hacer uso de la variable global: `FXCA002` - Precisión de decimales en volúmenes. ```dkl @erp.dprod.DECS_VOLUMEN = parse.num(dbr.vars.get(db,"FXCA002")) ``` #### @erp.dprod.RESERVAR_VENTAS_PENDIENTES Considera las cantidades por entregar por ventas para determinar si se debe o no producir una orden en el modo de producción EN DEMANDA. Tipo: `integer`, Predeterminado: `1` **Valores aceptados** - *0. -* No se considera ninguna venta por salir, se consideran las ventas que sacaran producto terminado del mismo almacén. - *1. -* Solo se consideran ventas posteriores a la que da origen a la orden (con base en su clave primaria). - *3. -* Se consideran todas las ventas por salir, independientemente de si son previas o posteriores a la que da origen a la orden en proceso.
### Métodos #### producir Ejecuta una orden de producción. ```dkl erp.dprod.producir(&db,¶ms) ``` **Parámetros** - `object` **db** Referencia a una conexión de base de datos abierta. - `array` **params** Referencia a un registro con las propiedades necesarias para ejecutar una orden. **Devoluciones** `array` Retorna el array con la información de la orden procesada/ejecutada. **Excepciones** 10 | No se encontró la orden de producción indicada. 0 | No se pudo completar la orden de producción. Excepciones de bases de datos. **Ejemplo** ```dkl #include "dkli.dkh" #! program "" { #include "functions.dkh" #include "serialize.dkh" #include "dbr.dkh" #include "dbr.vars.dkl" #include "inventario/movimientos.dkh" #include "dprod/dprod.dk" ref db = dbr.open("miconexion@grupoapps") new params { //REQUERIDOS @"orden": //(integer) Clave primaria de la orden de producción @"ref_salida": //(string) Referencia del movimiento de salidas para producción @"ref_entrada": //(string) Referencia del movimiento de entradas por producción @"descripcion_salida": //(string) Descripción del movimiento de salidas para producción @"descripcion_entrada": //(string) Descripción del movimiento de entrada por producción @"cat_salida": //(integer) Clave primaria de una categoría para el movimiento de salida para producción @"cat_entrada": //(integer) Clave primaria de una categoría para el movimiento de entrada por producción @"venta": //(integer) Clave primaria de la venta a la que se relacionarán los movimientos de entrada y salida //OPCIONALES @"metodo": //(integer) @erp.dprod.PROD_ENDEMANDA o @erp.dprod.PROD_COMPLETA, si se omite se asume En demanda @"trans": //(boolean) Si es @true, se incluye una transacción, si se omite se asume @false @"np_subrecetas": //(boolean) Si es true, no se producen en demanda las sub-recetas @"preservar_log": //(boolean) Si es true, se guardan los errores en la tabla dprod_log @"cancel": //(boolean) Si se establece en true, la orden se marcará cancelada si no se realiza ninguna entrada @"forze": //(boolean) Si se establece en true, aunque el método sea En demanda, producirá las cantidades de los productos de la orden, dejando la producción de sub-recetas en demanda } ref orden = erp.dprod.producir(db,params) } ```