NOTA
Aunque A3 permite que en una misma orden de producción se fabriquen varios productos, YO nunca uso este sistema.
Siempre hago una OP por cada producto a fabricar, para poder identificar solo con el número de OP de que producto estamos hablando.
Tablas y registros
Tablas
En la gestión de producción intervienen las siguientes tablas
CABEPROD: que contiene la cabecera de la OP. La usaremos para poner le número de OP, la fecha, el cliente o algún parametrizable que necesitemos. El campo IDPROD identifica la OP
LINEPROD: que contiene las líneas de la producción, son líneas tanto el producto como los componentes, perfiles maquinas o perfile operarios. El campo IDLINP identifica el registro
PRODFASES: que contiene las fases de la OP. El campo IDFASE identifica el registro de la fase
LOGPROD: cuando se realizan operaciones con la OP, lanzar, consumir, fabricar, etc.. queda registradas en esta tabla
HITPROD: donde quedan registrados los consumos realizados.
Identificar registros
Producto: en la tabla LINEPROD el registro que no tiene nada en CODARTP o el campo signo tiene una F, de fabricar. El campo es CODARTC
Componentes: en la tabla LINEPROD los registros que el campo signo es C y el TIPLIN es A. El campo es CODARTC
Perfiles Maquinas: en la tabla LINEPROD los registros que el campo signo es Q. El campo es PERFILMAQ
Perfiles Operarios: en la tabla LINEPROD los registros que el campo signo es o. El campo es PERFILPER
Ejemplos de código
Ejemplos en VBA para usar el objeto producción. La gestión de errores es propia de Artesania del software
Crear o modificar una OP
Function OPCrearEjemplo
Dim nIDPROD As Long
Dim nIDLINP As Long
Dim nIDFASE As Long
Dim sFecha As String, sTiempo As String
Dim sProducto As String
Dim nCantidadProducto As Double
Dim sFase As String, sFaseDescripcion As String
Dim sPerfilMaq As String
Dim sPerfilOpe As String
Dim sOperario As String
Dim sComponente As String
Dim nCantidadComponente As Double
Call erroresAbrir
Dim naxProduccion As a3ERPActiveX.OrdenProduccion
Set naxProduccion = New a3ERPActiveX.OrdenProduccion
naxProduccion.Iniciar
naxProduccion.Nuevo sFecha
Call Errores
naxProduccion.AsIntegerCab(“NUMDOC”) = 12345
naxProduccion.AsStringCab(“CODCLI”) = 123
naxProduccion.AsStringCab(“REFERENCIA”) = “lo que sea”
Call Errores
‘ Añadir el producto y cantidad a fabricar. A3 carga la estructura del producto automaticamente
nIDLINP = naxProduccion.NuevoProducto(sProducto, nCantidadProducto)
Call Errores
‘Añadir una fase y obtener su ID
nIDFASE = naxProduccion.NuevaFase(nIDLINP, sFase, sFaseDescripcion)
‘ Añadir un perfil maquina
nIDLINP = naxProduccion.NuevaMaquina(nIDFASE, sPerfilMaq, sTiempo)
‘ Añadir un perfil operario aplicando el operario por defecto
nIDLINP = naxProduccion.NuevoOperario(nIDFASE, sPerfilOpe, sTiempo)
‘ Añadir un perfil operario indicando un operario en concreto
nIDLINP = naxProduccion.NuevoOperarioV2(nIDFASE, sPerfilOpe, sTiempo, sOperario)
‘ Añadir un componente
nIDLINP = naxProduccion.NuevoComponente(nIDFASE, sComponente, nCantidadComponente, True)
nIDPROD = naxProduccion.Anade
naxProduccion.Acabar
Call Errores
Call ErroresMostrar
End Function
Consumir
Function OPConsumirEjemplo()
Dim nIDPROD As Long
Dim nIDLINP As Long
Dim sOperario As String, sMaquina As String
Dim sTiempo As String, sFecha As String
Dim nCantidadConsumida As Double
Dim sLote As String
Dim sCaducidad As String
Call erroresAbrir
Dim naxProduccion As a3ERPActiveX.OrdenProduccion
Set naxProduccion = New a3ERPActiveX.OrdenProduccion
naxProduccion.Iniciar
naxProduccion.Modifica nIDPROD
naxProduccion.ConsumirOperario nIDLINP, sOperario, sTiempo, sFecha, “S”
naxProduccion.ConsumirMaquina nIDLINP, sMaquina, sTiempo, sFecha, “S”
naxProduccion.ConsumirComponente nIDLINP, nCantidadConsumida, sFecha, “S”
naxProduccion.IndicarDetalle 0, nIDLINP, nCantidadConsumida, “”, sLote, “”, sCaducidad
Call Errores
naxProduccion.Anade
naxProduccion.Acabar
Call Errores
Call ErroresMostrar
End Function
Terminar Fase
Function OPTerminarFaseEjemplo()
Dim nIDPROD As Long
Dim nIDFASE As Long
Dim sFecha As String
Call erroresAbrir
Dim naxProduccion As a3ERPActiveX.OrdenProduccion
Set naxProduccion = New a3ERPActiveX.OrdenProduccion
naxProduccion.Iniciar
naxProduccion.Modifica nIDPROD
naxProduccion.TerminarFase nIDFASE, sFecha
Call Errores
naxProduccion.Anade
Call Errores
naxProduccion.Acabar
Call Errores
Call ErroresMostrar
End Function
Terminar OP
Function OPTerminarOPEjemplo()
Dim nIDPROD As Long
Dim sFecha As String
Call erroresAbrir
Dim naxProduccion As a3ERPActiveX.OrdenProduccion
Set naxProduccion = New a3ERPActiveX.OrdenProduccion
naxProduccion.Iniciar
naxProduccion.Modifica nIDPROD
naxProduccion.TerminarOrden sFecha
Call Errores
naxProduccion.Anade
naxProduccion.Acabar
Call Errores
Call ErroresMostrar
End Function
Borrar elemento
Dim nIDPROD As Long
Dim nIDLINP As Long
Call erroresAbrir
Dim naxProduccion As a3ERPActiveX.OrdenProduccion
Set naxProduccion = New a3ERPActiveX.OrdenProduccion
naxProduccion.Iniciar
naxProduccion.Modifica nIDPROD
naxProduccion.BorrarLinea nIDLINP
Call Errores
naxProduccion.Anade
naxProduccion.Acabar
Call Errores
Call ErroresMostrar
Fabricar sin consumir
Function OPFabricarEjemplo()
Dim nIDPROD As Long
Dim nIDLINP As Long
Dim sFecha As String
Dim nCantidadFabricada As Double
Dim sLote As String
Dim sCaducidad As String
Call erroresAbrir
Dim naxProduccion As a3ERPActiveX.OrdenProduccion
Set naxProduccion = New a3ERPActiveX.OrdenProduccion
naxProduccion.Iniciar
naxProduccion.Modifica nIDPROD
naxProduccion.FabricarProductoSinConsumir nIDLINP, nCantidadFabricada, sFecha, “S”
naxProduccion.IndicarDetalle 0, nIDLINP, nCantidadFabricada, “”, sLote, “”, sCaducidad
Call Errores
naxProduccion.Anade
naxProduccion.Acabar
Call Errores
Call ErroresMostrar
End Function
Borrar operaciones
Function OPBorrarOperacionesEjemplo()
Dim nIDPROD As Long
‘ Hay que identificar los registros en HISPROD con campos
Dim nIDLINC As Long ‘Identificador de la línea de consumo
Dim nNUMLIN As Long ‘Identificador de detalle de consumo
Call erroresAbrir
Dim naxProduccion As a3ERPActiveX.OrdenProduccion
Set naxProduccion = New a3ERPActiveX.OrdenProduccion
naxProduccion.Iniciar
naxProduccion.Modifica nIDPROD
naxProduccion.DeshacerConsumoOperario nIDLINC, nNUMLIN
naxProduccion.DeshacerConsumoMaquina nIDLINC, nNUMLIN
naxProduccion.DeshacerConsumoComponente nIDLINC, nNUMLIN
naxProduccion.DeshacerFabricacionProducto nIDLINC, nNUMLIN
naxProduccion.Anade
Call Errores
naxProduccion.Acabar
Call Errores
Call ErroresMostrar
End Function
Me gusta esto:
Me gusta Cargando...