#facturas #emisióndefacturas #facturasdeproducción #facturaenexcel #facturasenexcel #facturasautomáticas #basededatosexcel #producciónenexcel #sistemadegestiónycontrol
#controldeinventarios #sistemadegestiónycontroldeinventarios #preciodeventaexcel #margendecontribucionexcel #costounitarioexcel #calculodepreciodeventaautomatico
Hola emprendedores y entusiastas productivos. En este artículo vamos a realizar la emisión de facturas por correo electrónico de manera automática a un cliente que se encuentre en nuestra base de datos; vamos a generar una factura con los costos unitarios actualizados de cada producto y a almacenar los datos de la factura en otra base de datos. Esta factura se encuentra dirigida para personas que comienzan a emprender con sus actividades en producción, entusiastas o estudiantes. Bien, primero, observemos la definición de este concepto.
Factura
Según el portal web Reviso.com es aquel documento que autentifica que se ha recibido un servicio o adquirido un producto y es de cumplimiento obligatorio en las operaciones mercantiles. Debe contener como mínimo los siguientes requisitos básicos:
- Número de factura.
- Fecha de emisión.
- Datos del emisor de la factura: Nombre, cédula.
- Descripción de los bienes entregados.
- Tipo impositivo aplicado (IVA).
- Contraprestación total.
Con la teoría examinada, vamos a realizar un procedimiento para generar una factura para nuestra producción.
1. Identificación de los elementos de cálculo
Para el cálculo del ingreso de un producto elaborado debemos tener ciertos elementos imprescindibles e identificados sin ningún orden particular que se relacionan directa o indirectamente con este cálculo. Estos elementos son los siguientes:
- Costo Unitario. Cálculo que se obtiene al dividir el costo total de un periodo para las unidades elaboradas.
- Resumen de costos. Los costos de un producto van a variar respecto del tiempo, por lo tanto se requiere de una hoja siempre actualizada de los costos unitarios en orden de generar ingresos actualizados. Si se desea visualizar con más detenimiento a qué hacemos referencia con este elemento, puedes dirigirte a la última parte del post donde va este hipervínculo, allí encontrarás un video que hace mención solamente a este apartado.
- Base de datos de clientes. Es necesario tener lista una base de datos de clientes para adjuntar sus datos en nuestra factura rápidamente.
- Inventarios. Es importante tener el nivel de inventarios con que cuenta la compañía sobre un producto, para no vender lo que no se tiene.
Cada uno de estos componentes se pueden visualizar de forma detallada en diferentes artículos si se hace click sobre cualquiera de ellos.
2. Formulario para buscar los datos de clientes
El elemento que nos servirá para generar este formulario será la base de datos de clientes. Luego de ello, podremos realizar una búsqueda dentro de esta base de datos en un formulario B y pasar la información a otro formulario A. Si deseas descargar gratis este documento para la búsqueda de clientes dentro de una base de datos, puedes seguir el siguiente enlace: FORMULARIO PARA BUSCAR CLIENTES - DESCARGAR.
* El formulario A será similar al que se muestra en la siguiente figura:
Si aún no conoces cómo construir un formulario con VBA puedes seguir el enlace a continuación: Base de datos en Excel y VBA ; en el punto número 3 se muestra el proceso detallado para construir un formulario de manera rápida y sencilla.
* Mientras que el formulario B será similar al que se muestra en la siguiente figura:
Con ello se evitaría colocar a cada momento la información de un determinado cliente, y sólo se colocaría una nueva información si el cliente no se encontrara en la base de datos.
3. Formulario para emitir los datos del producto
Los elementos que nos servirán para desarrollar este formulario serán el resumen de costos y los inventarios; para tener el primer elemento, es necesario generar el costo unitario de cada producto elaborado; para el segundo, es necesario generar órdenes de producción y desarrollar el producto. Esto se explica con más detalle en el artículo de costo unitario dentro de esta web. A continuación, tendremos un formulario similar al que se muestra en la siguiente figura:
Bien, vamos a detallar algunos campos del formulario que se ha desarrollado:
* Producto: Es una lista desplegable donde se encuentran los productos elaborados, la misma puede establecerse a través de un rango dinámico, si deseas observar la ejecución detallada de este proceso, puedes ir al siguiente enlace: Rango dinámico y formularios en Excel y VBA.
* Código: Es el código que se establece para cada producto.
* Costo unitario: Es aquel costo perteneciente al artículo en cuestión y debería ser colocado de forma automática y actual; cuya búsqueda se realizaría por el producto que se ha colocado y la fecha más reciente en una hoja que podría llamarse resumen de costos.
* Margen de contribución: es el porcentaje que se espera ganar sobre el costo, entre mayor sea el margen, mayor la utilidad obtenida.
* P.V.U.: Con el margen de contribución y el costo unitario finalmente se puede obtener el precio de venta dando un click al botón que se encuentre a la derecha del casillero de margen de contribución. Para el precio de venta hay que tener en cuenta, el mercado y la estrategia de producción, sea la de menores costos, de mayor calidad o mejores costos.
* Cantidad: Es la cantidad que se va a vender de ese producto, teniendo en cuenta el inventario del producto aquel.
* Stock: Es un casillero informativo, sobre el stock existente para dicho producto. El stock se relaciona con el inventario elaborado, y se puede seguir con más detalle en el siguiente enlace: Gestor de inventarios sencillo en Excel y VBA.
4. Codificación VBA
Este formulario debe contener controladores de error para guiar al usuario y generar una correcta entrada de datos. Para ir dentro del formulario y colocar el código completo asociado al mismo basta con hacer click derecho en el formulario o UserForm y click en ver código.Bien, observemos parte del código que podría tener este formulario, específicamente para determinar el precio de venta cuando se hace click en el botón PVU del formulario visto anteriormente:
Private Sub CommandButton4_Click()
'calcular el precio de venta unitario
If mc.Text = "" Or costounitario.Text = "" Then
MsgBox ("Colocar valor en el margen de contribución para calcular el precio de venta."), vbCritical
Else
pvu.Text = (Format(mc.Text, "0.0000") * Format(costounitario.Text, "0.0000")) + Format(costounitario.Text, "0.0000")
End If
End sub
5. Botón para almacenar los ingresos en una base de datos
Con los datos ingresados en el formato de factura, es posible almacenar los datos de tal forma que puedan ser organizados por fecha, cliente y productos vendidos. Para ello, podemos insertar una figura la misma que contenga un código VBA que realice esta tarea. Bien, observemos parte del código que podría tener este botón, específicamente cuando se trate de controladores de error, para ello primero fijamos las variables del código para que se pueda comprender:
B15: Código del primer ítem de la factura.
C15: Descripción del primer ítem de la factura.
D15: Precio del primer ítem de la factura.
E15: Cantidad del primer ítem de la factura.
E4: Número de factura.
E5: Fecha de factura.
E8: Cliente asignado a la factura.
E9: Cédula.
E10: Dirección.
E11: Localidad.
E12: Correo electrónico.
Sheets("BD").Columns(45): Hoja de base de datos, columna 45. La cual corresponde a la columna de número de factura.
'Controlador de error 1: NO hay datos de producto
If Sheets("FACTURA").Range("B15") = "" Or Sheets("FACTURA").Range("C15") = "" Or Sheets("FACTURA").Range("D15") = "" Or Sheets("FACTURA").Range("E15") = "" Then
MsgBox ("Faltan datos del producto"), vbCritical
Exit Sub
End If
'Controlador de error 2: NO hay datos de cliente
If Sheets("FACTURA").Range("E4") = "" Or Sheets("FACTURA").Range("E5") = "" Or Sheets("FACTURA").Range("E8") = "" Or Sheets("FACTURA").Range("E9") = "" Or Sheets("FACTURA").Range("E10") = "" Or Sheets("FACTURA").Range("E11") = "" Or Sheets("FACTURA").Range("E12") = "" Then
MsgBox ("Faltan datos del cliente"), vbCritical
Exit Sub
End If
'Controlador de error 3: Evitar facturas duplicadas
Registro = Sheets("FACTURA").Range("E4").Value
contarduplicado = Application.WorksheetFunction.CountIf(Sheets("BD").Columns(45), Registro)
If contarduplicado > 0 Then
MsgBox ("Número de factura ya existe."), vbCritical
Exit Sub
End If
Estos pueden ser los controladores de error que tenga este botón, para de allí pasar la información del formato de la factura a una base de datos, que podría ser llamada "ingresos".
6. Extras ( impresión, PDF y factura por correo)
La factura puede estar acompañada de ciertos botones que generen acciones tales como vista previa para impresión, guardar el documento como archivo PDF, o guardar el documento en PDF y enviar la factura automáticamente por correo electrónico vía outlook. A continuación, vamos a observar el código para ejecutar una vista previa de impresión y para almacenar el documento como archivo PDF.
Sub Imprimirfactura()
' Vista previa de impresión de factura
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Sub guardarPDF()
'Asignar variables
Dim wsA As Worksheet
Dim wbA As Workbook
Dim strName As String
Dim strPath As String
Dim strFile As String
Dim strPathFile As String
Dim myFile As Variant
On Error GoTo errHandler
Set wbA = ActiveWorkbook
Set wsA = ActiveSheet
'Nombre del libro activo
strPath = wbA.Path
If strPath = "" Then
strPath = Application.DefaultFilePath
End If
strPath = strPath & "\"
'Reemplazar espacios y periodos en la hoja
strName = Replace(wsA.Name, " ", "")
strName = Replace(strName, ".", "_")
'Nombre en Default
strFile = strName & "_" & Range("E4") & "_" & Format(Range("E5"), "dd-mm-yyyy") & ".pdf"
strPathFile = strPath & strFile
' Seleccionar la carpeta
myFile = Application.GetSaveAsFilename _
(InitialFileName:=strPathFile, _
FileFilter:="PDF Files (*.pdf), *.pdf", _
Title:="Seleccione una carpeta para guardar la factura")
'Exportar a PDF si el archivo es seleccionado
If myFile <> False Then
wsA.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=myFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
'Mensaje de confirmación
MsgBox ("El archivo PDF ha sido creado con la siguiente especificación: " _
& vbCrLf _
& myFile), vbInformation
End If
exitHandler:
Exit Sub
errHandler:
MsgBox ("Hubo un error, no se pudo crear el archivo pdf."), vbCritical
Resume exitHandler
End Sub
Para este último código asimismo las pocas variables son las mismas que las vistas con anterioridad en el paso #5.
Si deseas visualizar la ejecución del programa para realizar la facturación en un proceso de producción puedes observar el siguiente vídeo:
Eso sería el procedimiento para generar la facturación en un proceso de producción con VBA y Excel. Si deseas realizar tu propio sistema rápidamente a partir de nuestro código ya construido, puedes considerar adquirir nuestro sistema a un costo bastante accesible, el cual muestra todo el código empleado para los formularios en cuestión con un único pago y licencia perpetua, el mismo te permite editar todo el código sin ningún tipo de restricción, y muchos otros beneficios y funcionalidades que puedes observar en esta web en el apartado Descripción - Funciones.
Espero que este artículo te haya sido de ayuda o guía. Por mi parte, me despido, sin antes desearles un genial día. Y, no se olviden de sonreír, para recordar que la vida sonríe siempre.
Referencias bibliográficas:
Anónimo (2014). [En línea]. Extraído de la página web: https://www.reviso.com/es/que-es-una-factura
Comments