Archivo de la categoría: Access

A3ACTIVEX Objeto produccion

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

Normas de estilo de programas access de asoft

Variables

Las variables deben declararse en la parte superior de los procedimientos

Las primeras letras indican el tipo de variable:

  • Para strings, una s
  • Para numéricas, una n
  • Para fechas, una d
  • Los recordsets siempre rst
  • La base de datos siempre db

Si el nombre es compuesto de varias palabras se inicia cada palabra en mayúsculas

  • Dim rstPedidosVentasLineas as recordset

Si se declaran varias variables del mismo tipo se ponen todas en la misma línea. Ejemplo:

  • Dim rstVP as recordset, rstVPLIN as recordset
  • Dim sSQL as string, sCliente as string

Recorrer un recordset

En este ejemplo

  1. Declaramos las variables
  2. Asignamos valor a la de base de datos y la de recordset
  3. Verificamos si hay algún registro y si no lo hay terminamos el procedimiento
  4. Nos movemos al primer registro
  5. Hacemos un bucle hasta el EOF End Of File
  6. Ejecutamos el código
  7. Nos movemos al siguiente registro
  8. Salimos del bucle

Código

  • Dim db As Database
  • Dim rst As Recordset
  • Set db = CurrentDb()
  • Set rst = CurrentDb().OpenRecordset(“Consumir líneas TMP”, dbOpenDynaset, dbSeeChanges)
  • If rst.RecordCount = 0 Then
    • MsgBox “No se ha consumido nada de esta OP”, vbCritical, “Preparaciones Consumir”
    • Exit Function
  • End If
  • rst.MoveFirst
  • Do Until rst.EOF
    • ‘Código a ejecutar
    • rst.MoveNext
  • Loop

Usar un procedimiento NAX

Explicación

  1. Abrimos el control de errores de NAX
  2. Declaramos la variable y asignamos valor al objeto
  3. Iniciamos el objeto
  4. Aplicamos un método y ejecutamos el control de errores
  5. Aplicamos el método añadir
  6. Usamos el método acabar
  7. Mostramos los errores

Uso del objeto producción

  • Call ErroresAbrir
  • Dim naxProduccion As a3ERPActiveX.OrdenProduccion
  • Set naxProduccion = New a3ERPActiveX.OrdenProduccion
  • naxProduccion.Iniciar
  • naxProduccion.Modifica rst!IDPROD
  • Call Errores
  • naxProduccion.ConsumirComponente rst!IDLINP, rst!Consumido, CStr(Date), “S”
  • Call Errores
  • naxProduccion.Anade
  • Call Errores
  • naxProduccion.Acabar
  • Call Errores
  • Call ErroresMostrar

Uso del objeto traspaso

  • Call ErroresAbrir
  • Dim naxTraspasar As a3ERPActiveX.Traspaso
  • Set naxTraspasar = New a3ERPActiveX.Traspaso
  • naxTraspasar.Iniciar
  • naxTraspasar.Borra Me.IDTraspaso
  • Call Errores
  • naxTraspasar.Acabar
  • Call Errores
  • Call ErroresMostrar

Funciones de dominio agregado

Dcount: Para saber cuántos registros tiene una tabla

DCount(“*”, “Fabricar TMP”)

Ejemplo para contar cuantos registros hay en la tabla Fabricar TMP, y si son distintos de 0 mostrar un mensaje

  • If DCount(“*”, “Fabricar TMP”) <> 0 Then
    • If MsgBox(“Hay Fabricar pendientes de traspasar al A3ERP, seguro que quiere salir”, vbCritical + vbDefaultButton2 + vbYesNo, Me.Name) = vbNo Then
      • Exit Sub
    • End If
  • End If

Lo mismo pero aplicando un criterio para contar los registros que cumplen el criterio

Contar cuantos registros hay en la tabla OP Histórico, para la OP que contiene la variable nOP

  • DCount(“*”, “[OP Histórico]”, “OP=” & nOP)

Contar cuantos registros hay en la tabla dbo_escandallos para el articulo que contiene la variable sArticulo. Como es un string usamos los ‘ para encerrar la variable

  • DCount(“*”, “dbo_escandallo”, “codartp = ‘” & sArticulo & “‘”)

Dlookup: Para buscar un valor en una tabla

Por ejemplo buscar el valor del campo situación en la tabla Pedidos ventas A3ERP líneas para el numero de línea que contiene la variable nLinea

  • DLookup(“Situación”, “[Pedidos ventas A3ERP líneas]”, “[Numero línea]=” & nLinea)

Buscar el valor del campo Haylotes en la tabla artículos, para el valor de la variable Me.Componente, que como es un string encerramos entre ‘

  • DLookup(“HAYLOTES”, “Artículos”, “Articulo='” & Me.Componente & “‘”)

Mensajes con msgbox

Mensajes para mostrar un texto

  • MsgBox “No ha guardado”, vbCritical, Me.Caption

Siempre después del texto ponemos un icono con alguno de los valores vb que se muestran al desplegar, y al final el Me.caption, que da el nombre del formulario

Mensajes para hacer una pregunta

  • If MsgBox(“Seguro que quiere borrar el traspaso”, vbQuestion + vbDefaultButton2 + vbYesNo) = vbNo Then
    • Exit Sub
  • End If

Ponemos el icono de interrogación, que este activo el segundo botón, y que pregunte si o no.

Ejecutar una consulta de parámetros

A veces interesa montar una consulta y dejar algún campo que se le pase como parámetro antes de ejecutarla.

Los parámetros en las consultas siempre los empezamos con la letra q, por ejemplo qPreparacion.

En el código declaramos la variable, pasamos el parámetro y ejecutamos. Este ejemplo ejecuta la consulta Preparaciones actualizar consumido, pasándole como parámetro el valor de la variable nPreparacion

  • Dim qDef As QueryDef
  • Set qDef = db.QueryDefs(“Preparaciones actualizar consumido”)
  • qDef.Parameters![qPreparacion] = nPreparacion
  • qDef.Execute

Enviar un email

El siguiente código conecta con Outlook, pone los datos para enviar un email y lo muestra en pantalla o lo envía directamente.

Recomiendo usar el código y comentar lo que no se vaya a usar

  • Dim olkApp As Outlook.Application
  • Dim olkNameSpace As Outlook.NameSpace
  • Dim objMailItem As Outlook.MailItem
  • Set olkApp = New Outlook.Application
  • Set olkNameSpace = olkApp.GetNamespace(“MAPI”)
  • Set objMailItem = olkApp.CreateItem(olMailItem)
  • With objMailItem
    • .To =”elquesea@dominio.com”
    • .CC = “mail de l
    • .BCC = eMailCCO
    • .Subject = “texto del asunto”
    • .Body = “texto del mensaje”
    • .Attachments.Add Trim(sFichero) ‘Si hay que adjuntar un fichero hay que pasar una variable con la ruta, nombre y extensión.
    • .Send
    • .Display
  • End With
  • Set objMailItem = Nothing
  • Set olkNameSpace = Nothing
  • Set olkApp = Nothing

Funciones útiles

Función Hayalgo() para ver si una variable tiene algún contenido

Esta función la usamos para mirar si una variable tiene algún valor, tiene algo, contiene algo.

Se considera que no tiene nada si es, null, “” o 0

Ejemplo: si no hay algo en qArticulo mostramos un mensaje.

  • If Not hayalgo(Me.qArticulo) Then
    • MsgBox “No ha indicado artículo”, vbCritical, Me.Caption
    • Exit Sub
  • End If

Función NAC() para retornar 0 si no hay un valor numérico en una variable

Si la variable que pasamos es un número, la devuelve, en caso contrario devuelve 0, por ejemplo si pasamos un nulo o un “”.

Es básica para convertir posibles valores nulos a 0

Ejemplo: si los contadores fueran nulos los trata como ceros

  • Me.Cantidad_fabricada = NAC(Me.Contador_final) – NAC(Me.Contador_inicial)

Función Cuadrar() para cuadrar una variable a la derecha como hace el ERP

Tiene un parámetro opcional, la longitud a cuadrar. Si no se pasa se cuadra a 8 caracteres

  • Me.qProveedor = cuadrar(Me.qProveedor)
  • Me.qArticulo = cuadrar(Me.qArticulo, 15)
  • Me.qLote = cuadrar(Me.qLote, 25)

Función Ceros() para formatear una variable con ceros a la izquierda

Formatea una variable a la cantidad de ceros que indiquemos

Se le pasan dos parámetros la variable y la cantidad de ceros

  • campotabla = ceros(Me.Listado, 6)

En este ejemplo campo tabla toma el valor de Me.listado pero en formato 000000

Es lo mismo que aplicar la función format pero se desarrolló para simplificar el código.

Función DatoEmpresa() para obtener el valor de un campo de la empresa activa

Devuelve el valor del campo que indiquemos en la empresa de ASOFT a la que estamos conectados.

  • sDirectorio = datoempresa(“Carpeta”)

En este ejemplo la variable sDirectorio toma el valor del campo Carpeta de la empresa activa de ASOFT

Función IRA3ERP() para ir a un fichero y registro de A3erp

Le pasamos dos parámetros

  1. El fichero de a3erp que debe abrirse
  2. El valor del campo clave que debe buscarse

Este ejemplo abre a3erp y muestra el artículo que está en Me.articulo

  • Call iraa3erp(“Artículos”, Me.Articulo)

Este ejemplo abre a3erp y muestra el albarán compras que tiene el IDALBC que pasamos como valor

  • Call iraa3erp(“Albaranes compras”, IDALBC)

Si no pasamos el segundo parámetro crea un registro nuevo

  • Call iraa3erp(“Clientes”, “”)

Función IrAConDatoSQL para abrir un formulario de Asoft y mostrar el registro que nos intereses

Le pasamos tres parámetros

  1. El nombre del formulario
  2. El nombre del campo clave
  3. El valor a buscar en el campo clave

En este ejemplo abre pedidos ventas, y muestra el registro que en el campo Pedido tiene el valor “P00001”

  • Call iracondato(“Pedidos ventas”, “Pedido”, “P00001”)

ERROR: cancelo la operación anterior

Si al abrir un formulario o un informe obtenemos el mensaje

C:\Users\Domènec\Downloads\estamp1 (1).png

Esto nos indica que seguramente hay un error en la consulta del formulario o informe.

Debemos buscar el formulario o informe, diseñarlo, ir al origen de datos y abrirlo.

Posiblemente encontremos un mensaje: El motor de base de datos de Microsoft Access no puede encontrar la tabla o consulta de entrada…

C:\Users\Domènec\Downloads\estamp2 (1).png

Hay que revisar en la lista de tablas que exista la que está fallando.

En este ejemplo NO existía la tabla dbo_LINEINVE

No hay licencias disponibles para este programa

Si obtenemos el mensaje

Es que estamos intentando instalar el programa en un ordenador y ya hemos excedido el número de licencias que se han comprado.

Si es un usuario nuevo debe contactar con APEN para comprar más licencias.

Puede ser también que hayan cambiado el ordenador o formateado y en este caso podremos recuperar la licencia anteriormente ocupada.

Abrir ASOFTSEGU

Si no ve la tabla UsysLicencias, haga

Donde pone Todos los objetos, boton de la derecha, Opciones de navegacion.

Marcar buscar objetos del sistema y mostrar la barra de busqueda y Aceptar

Debemos ir a tablas, buscar la UsysLicencias y abrirla

Buscamos el registro del usuario que ha cambiado de ordenador y suprimimos lo que hay en el campo HD.

En este ejemplo hemos suprimido el contenido del campo HD del registro del usuario MIQUEL

Al entrar en el programa, este nos pedirá el nombre de usuario y ya quedara registrado.

La acción open report se cancelo

Si obtenemos el mensaje

Seguramente hay un fallo en el informe que estamos intentando abrir.

Pulsamos depurar para ver el código

Y la línea en amarillo nos dice que informe está fallando.

Hay que ir a la base de datos (F11) buscar el informe y diseñarlo.

Vamos al origen de datos, y vemos que consulta tiene.

Buscamos la consulta y la ejecutamos, para detectar si tiene algún error y corregirlo.

Si el informe no se pude abrir, es que está roto, tendrá que recuperarlo de una copia de seguridad.

Otra posibilidad es que tenga una impresora predeterminada, que NO existe, o cuyo tamaño de papel es inferior al del informe, y por eso no deja abrirlo.

Cambie la impresora predeterminada y pruebe con una que admita A4

ERROR: la operación debe usar una consulta actualizable

Si obtenemos este mensaje de error

Hay que pulsar en depurar y veremos en amarillo la línea de código que da el error

Que será la ejecución de una consulta

Paramos el código con

Buscamos la consulta y la diseñamos para que tablas utiliza

Seguramente alguna de las tablas empleadas NO tiene un índice único

En este caso es la dbo_Caracter_Art_1

Hay que volver a vincularla e indicar el índice

Vincular tablas de A3

Los programas de Asoft se conectan con A3 y usan sus tablas para gestionar la información. Pero para ello debemos indicar que tablas queremos vincular.

Hacemos doble clic en el menú principal, en la parte inferior izquierda donde están las cadenas de conexión

Se muestra la pantalla de A3ERP Conexión

Seleccionar las Tablas A3ERP a vincular

Con el botón

Se muestran las tablas de A3 y podemos ir marcando las que quedamos Vincular

Es importante también indicar el campo que debe ser clave principal

Ejecutar la vinculación

Con el botón

Se ejecuta el procedimiento que vincula tala tablas seleccionadas

Si hemos indicado el índice, se mostrara un mensaje indicándolo.

En la parte de la derecha vemos las tablas vinculadas

Re vincular

Si alguna nos da problemas o queremos re vincularla basta con hacer doble clic sobre ella.

Añadir una tabla a vincular

Si ya hemos vinculado las tablas y solo queremos añadir alguna basta con entrar en Tablas a3ERP a vincular, seleccionarla, cerrar la tabla y hacer clic en la lista de tablas.

Que se refresca y nos mostrara la que hemos añadido

Ahora hacemos doble clic y se re vincula solo esta.

Manual Packing List

Utilidad

El packing list sirve para agrupar en un documento varios documentos de venta de un mismo tipo y poder indicar cada artículo en que palet va.

A partir de esta distribución se puede imprimir un documento de packing list con el detalle de lo que va en cada palet o etiquetas.

El programa lleva un impreso de packing y uno de etiquetas que pueden personalizarse con cargo a las horas de pack instalación.

Restricciones

  • Los documentos de venta deben tener serie
  • En un mismo packing no pueden mezclarse documentos de agencias de transporte distintas.
  • En un mismo packing no pueden mezclarse albaranes de venta, con depósitos de venta o facturas de venta.
  • En un mismo packing puede haber varios documentos de venta, de distintos clientes, y distintas direcciones de entrega: pero en este caso habrá que rediseñar por completo el impreso y las etiquetas.

Terminología

Aunque en el programa se usa la palabra palet, se ha puesto en un sentido genérico, puede valer para cajas, bultos, paquetes….en fin cualquier tipo de embalaje que el cliente use.

En el impreso es fácil cambiar la palabra y poner la que el cliente desee

Pantalla de selección

Es la típica pantalla que nos permite filtrar y ver los packing que tenemos creados y guardados.

Como en un packing puede haber varios clientes, el packing se muestra tantas veces como clientes tenga.

Nuevo packing

Pulsamos el botón

Y automáticamente se muestra una pantalla con el nuevo packing, con el número que le ha asignado el programa.

Podemos cambiar la fecha y la agencia.

Si ponemos una agencia todos los documentos que añadamos deben ser de la misma agencia.

Añadir documentos

Podemos añadir albaranes, facturas y depósitos de venta pulsando el correspondiente botón del pie de pantalla

Al pulsar uno de estos botones, por ejemplo Añadir albarán venta, se nos muestra una pantalla

Para indicar la serie y el número

Los ponemos y pulsamos aceptar.

Automáticamente se cargan las líneas en

Página líneas

Página albaranes

Página artículos

Distribuir los artículos en palets

Solo podemos modificar la página líneas, donde debemos indicar cada artículo en que palet va. Por ejemplo

O si un artículo hay que repartirlo en diferentes cajas podemos hacerlo. Por ejemplo

Podemos añadir todos los documentos que queramos siempre que sean del mismo tipo: albaranes, facturas o depósitos

Página palets

Una vez terminado de indicar los números de palet debemos ir a la página palets

Donde se muestran los números e palet que hemos creado y podemos indicar

  • Tipo palet
  • Etiquetas: cantidad a imprimir
  • Peso neto
  • Peso bruto
  • Medidas

Todos los campos son opcionales.

Si no hemos puesto la agencia, la podemos poner ahora. Así como unas observaciones

Y por último pulsar el botón

Impresión del packing

Pulsando el botón

Se muestra el formulario para escoger el modelo de impreso

Por defecto el programa trae uno, pero podemos adaptarlo a su gusto o crear otros especiales incluso en distintos idiomas.

Impresión de etiquetas

Con el mismo botón de imprimir, y usando el desplegable podemos elegir el modelo de etiquetas

Y obtendremos un modelo que hemos diseñado y que podemos ajustar a su gusto con cargo a las horas de instalación

Recomendación

Para imprimir las etiquetas es MUY RECOMENDABLE que dispongan de una impresora de bobina de papel.

No aconsejamos imprimir etiquetas en A4 dada la dificultad de ajustar el tamaño y el desperdicio de etiquetas en blanco.

Añadir palets

Hay negocios donde un mismo artículo se distribuye en distintos palets, para eso hemos creado esta pantalla

Contestando a las preguntas, nos crea distintos palets con el mismo artículo y la cantidad indicada