Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - greinoso

Páginas: [1]
1
Visual Basic 6 / Re:Epson Fiscal TM-U220
« en: Abril 29, 2016, 02:47:17 pm »
Hola Gente! Soy de Argentina y los contacto en busca de resolver un problema que se me presentó. Estoy desarrollando una aplicación en Visual Studio con C#. La misma permite la facturación de ventas de un determinado comercio implementando una controladora fiscal EPSON TM-U220 AFII. Dichos comprobantes de pago, pueden ser de dos tipos:
-Tique (o Comprobante B a algún consumidor final), o
-Tique-Factura (o Comprobante A a algún Responsable Inscripto)

La cuestión a tener en cuenta, es que los precios unitarios de cada artículo que comercializa el dueño del comercio YA TIENEN INCLUIDO EL IVA.
Suponiendo el siguiente ejemplo de una Venta Total de $75,00 debería poder obtener ambos comprobantes. Los cuales entiendo que tendrían que tener la siguiente forma:

1) COMPROBANTE B (o Tique)

---------------------------------------------------------------
Encabezado de Tique (Datos del Comercio)

A Consumidor Final
P:V: Nro.: 0001
Nro. T.                                            xxxxxxxx
Fecha xx/xx/xx                      Hora: xx:xx:xx

50,0000 x 1,5000
ARTICULO1                                        75,00

TOTAL                                    75,00
Su pago                                             75,00
Su vuelto                                             0,00
---------------------------------------------------------------






2) COMPROBANTE A (o Tique-Factura)


---------------------------------------------------------------
Encabezado de Tique-Factura (Datos del Comercio)

---------------------------------------------------------------
TIQUE FACTURA A                              Nro. T. xxxx-xxxxxxxx
                                                           Fecha xx/xx/xx
                                                           Hora: xx:xx:xx
---------------------------------------------------------------
Datos del Comprador
IVA Responsable Inscripto
---------------------------------------------------------------
Cant./Precio Unit. /
Descripcion
---------------------------------------------------------------
50.000x1.50
ARTICULO1                               (21.00)              75,00

NETO SIN IVA                                                      61,98                     

SUBTOT. IVA 21.00%                                          61,98                     
IVA  21.00%                                                        13,02                     

TOTAL de Ventas:                                        75,00

Suma de sus pagos                                             75,00
Su vuelto                                                               0,00
---------------------------------------------------------------

La pregunta es: ¿Cómo pasar los valores de la venta para obtener un Tique-Factura A como el mencionado en el ejemplo (recuerden que los articulos ya poseen el IVA incorporado en sus Precios Unitarios)?

Yo lo he intentado con el siguiente código:

Código: [Seleccionar]
 
            string iva = "2100";
            string venta = "M";
            string bultos = "0";
            string parametroVacio = "";
            string incremetoTasa = "1050";
            string ImpuestosInternos = "0";
            string printer = "P";
            string texto = "SUB";
            string pago = "PAGO";
            string articulo = "ARTICULO1";
            string cantidad = "50000";
            string precioUnitario = "150";
            axPrinterFiscal2.PortNumber = 1; //El numero de puerto al cual se encuentra conectada la Controladora Fiscal
            axPrinterFiscal2.BaudRate = "9600";

            axPrinterFiscal2.SendInvoiceItem(ref articulo, ref cantidad, ref precioUnitario, ref iva, ref venta, ref bultos, ref bultos, ref parametroVacio, ref parametroVacio, ref parametroVacio, ref incremetoTasa, ref ImpuestosInternos);
            axPrinterFiscal2.GetInvoiceSubtotal(ref printer);
            double divisor=1.21;
            calculoMonto = ((Convert.ToDouble(cantidad) / 1000) * (Convert.ToDouble(precioUnitario) / 100));
            double netoIVA = calculoMonto / divisor;

            string monto = netoIVA.ToString();
            axPrinterFiscal2.SendInvoicePayment(ref pago, ref monto, ref tipoDocumentoFiscal);
            axPrinterFiscal2.CloseInvoice(ref tipoDocumentoFiscal, ref letraFactura, ref parametroVacio);

pero observarán que no obtengo los resultados esperados, ya que :
 


ya que no me discrimina el valor del IVA al monto total de la venta, sino que lo suma a dicho monto, por lo que el TOTAL termina siendo otro, y no los $75,00 de la venta que propuse como ejemplo.
Desde ya, se agradece cualquier aporte!! Saludos.-

2
Visual Basic 6 / Re:Epson Fiscal TM-U220
« en: Abril 01, 2016, 11:10:58 am »
Hola gente! Interesante post... sólo que no consigo que me funcione la emisión de un Tique-Factura. Les comento mi problema:

Soy de Argentina y estoy desarrollando una aplicación en Visual Studio 2012 con C#. La misma consiste en un sistema de ventas de productos de un comercio, el cual debe permitir la emisión de comprobantes fiscales a través de una controladora fiscal EPSON TM-u220 AFII.

El detalle de una venta es registrado en la base de datos y se muestra a través de un DataGridView (grdDetalleVenta) presente en un formulario (frmDetalleVenta).

Al finalizar la carga del detalle de una determinada venta, la aplicación permite seleccionar el tipo de comprobante que se precisa emitir utilizando la controladora fiscal, a saber:

1. El vendedor puede elegir emitir un TIQUE (el cual consiste en una "Factura B" dirigido a algún "Consumidor Final")

2. El vendedor también podría elegir emitir un TIQUE FACTURA (el cual consiste en una "Factura A" dirigido a algún Responsable Inscripto).

En el proyecto he incorporado la referencia correspondiente del control IFEpson (EPSON_Impresora_Fiscal) y he arrastrado dicho control (de nombre axPrinterFiscal2) al formulario desde el cual deseo emitir los tique (tanto el "B" como el "A").

Ahora bien, para el primer caso, donde debo emitir un tique "B", no tengo inconvenientes en generar el comprobante de pago e imprimirlo desde la controladora Fiscal, para ello, el código utilizado es el siguiente:

                    if (Convert.ToInt16(cboTipoComprobante.SelectedValue) == 2) //TIQUE B
                    {
                        iva = "2100";
                        venta = "M";
                        bultos = "0";
                        ImpuestosInternos = "0";
                        printer = "P";
                        texto = "SUB";
                        pago = "Efectivo";
                        calculoMonto = Convert.ToDouble(txtTotal.Text);             //TextBox que tiene el Total de la Venta
                        calculoMonto = calculoMonto * 100;
                        monto = (calculoMonto).ToString();
                        descripcion = "T";
                        //Incorporo en el formulario un control IFEpson Fiscal, llamado "axPrinterFiscal2" (El cual esta disponible luego de agregar a mi proyecto el OCX Epson Fiscal)
                        axPrinterFiscal2.PortNumber = 3;  //Numero de Puerto al cual se encuentra conectado la controladora fiscal a mi PC
                        axPrinterFiscal2.BaudRate = "9600";
                        axPrinterFiscal2.OpenTicket(); //Abro un Tique, ya que el comprobante, para este caso, será del tipo "B"
                        //Recorro el DataGridView que contiene el detalle de la venta (Cantidad, Descripcion, Precio Unitario y Subtotal) para ir enviando los ítems de la venta al ticket (mediante la función axPrinterFiscal2.SendTicketItem)
                        for (int i = 0; i < grdDetalleVenta.Rows.Count; i++)
                        {
                            string sqlArticulo = "SELECT ISNULL(P.codigo + ' - ' + PE.nombre,'') FROM Producto P, Peso PE, DetalleVenta DV WHERE DV.idProducto=P.idProducto AND P.idPeso=PE.idPeso AND DV.idDetalleVenta=" + Convert.ToInt64(grdDetalleVenta.Rows[ i ].Cells[0].Value);
                            string articulo = producto.conocerCampoRegistro(cadena.cadenaConexion.ToString(), sqlArticulo, "Error al conocer el nombre del Artículo");
                            string sqlCantidad = "SELECT ISNULL(DV.cantidad,'') FROM DetalleVenta DV WHERE DV.idDetalleVenta=" + Convert.ToInt64(grdDetalleVenta.Rows[ i ].Cells[0].Value);
                            string cantidad = (Convert.ToDouble(producto.conocerCampoRegistro(cadena.cadenaConexion.ToString(), sqlCantidad, "Error al conocer el nombre del Artículo")) * 1000).ToString();
                            string sqlPrecioUnitario = "SELECT ISNULL(DV.precioUnitario,'') FROM DetalleVenta DV WHERE DV.idDetalleVenta=" + Convert.ToInt64(grdDetalleVenta.Rows[ i ].Cells[0].Value);
                            string precioUnitario = (Convert.ToDouble(producto.conocerCampoRegistro(cadena.cadenaConexion.ToString(), sqlPrecioUnitario, "Error al conocer el precio unitario del Artículo")) * 100).ToString();
                            string sqlSubtotal = "SELECT ISNULL(DV.subtotal,'') FROM DetalleVenta DV WHERE DV.idDetalleVenta=" + Convert.ToInt64(grdDetalleVenta.Rows[ i ].Cells[0].Value);
                            string subtotal = (Convert.ToDouble(producto.conocerCampoRegistro(cadena.cadenaConexion.ToString(), sqlSubtotal, "Error al conocer el subtotal del Detalle")) * 100).ToString();
                            axPrinterFiscal2.SendTicketItem(ref articulo, ref cantidad, ref precioUnitario, ref iva, ref venta, ref bultos, ref ImpuestosInternos);
                        }
                        //Una vez cargados todos los ítem que conforman la VENTA, agrego los subtotales del Tique y cierro el mismo
                        axPrinterFiscal2.GetTicketSubtotal(ref printer, ref texto);
                        axPrinterFiscal2.SendTicketPayment(ref pago, ref monto, ref descripcion);
                        axPrinterFiscal2.CloseTicket();
                    }
Para el segundo caso, donde debo emitir un tique factura "A", he intentado con el siguiente código, pero no consigo que la controladora imprima el tique factura:

                    //Declaro las variables que luego pasaré por referencia a las funciones de la Controladora Fiscal
                   
                        iva = "2100";
                        venta = "M";
                        bultos = "0";
                        ImpuestosInternos = "0";
                        printer = "P";
                        texto = "SUB";
                        pago = "PAGO";
                        calculoMonto = Convert.ToDouble(txtTotal.Text);
                        calculoMonto = calculoMonto * 100;
                        monto = (calculoMonto).ToString();
                        descripcion = "T";

                        string tipoDocumentoFiscal = "T";
                        string salidaImpresora = "C";
                        string letraFactura = "A";
                        string cantidadCopias = "1";
                        string tipoFormulario = "P";
                        string tipoLetra = "12";
                        string IVA_Emisor = "I";
                        string IVA_Comprador = "F";
                        string nombreCliente1 = nombreCliente; //Variable que contiene el nombre del cliente
                        string nombreCliente2 = razonSocialCliente; //Variable que contiene la razon social del cliente
                        string tipoDocumento = "CUIT";
                        string numeroDocumento = ClienteCUIT; //Variable que contiene el CUIT del cliente
                        string bienDeUso = "N";
                        string domicilioComprador1 = domicilioCliente; //Variable que contiene el Domicilio del cliente
                        string domicilioComprador2 = "";
                        string domicilioComprador3 = "";
                        string remito1 = "REM 1";
                        string remito2 = "REM 2";
                        string tipoTablaItem = "C";
                        axPrinterFiscal2.PortNumber = 2; //Nuevamente, el numero de puerto al cual se encuentra conectada la Controladora Fiscal
                        axPrinterFiscal2.BaudRate = "9600";

                        //Función que debería dar apertura a una factura A, la cual recibe los siguientes parámetros por referencia                       
                        axPrinterFiscal2.OpenInvoice(ref tipoDocumentoFiscal, ref salidaImpresora, ref letraFactura, ref cantidadCopias, ref tipoFormulario, ref tipoLetra, ref IVA_Emisor, ref IVA_Comprador, ref nombreCliente1, ref nombreCliente2, ref tipoDocumento, ref numeroDocumento, ref bienDeUso, ref domicilioComprador1, ref domicilioComprador2, ref domicilioComprador3, ref remito1, ref remito2, ref tipoTablaItem);
                        //LUEGO DE ESTA INSTRUCCIÓN NO HAY ACTIVDAD EN LA CONTROLADORA FISCAL

Alguna observación para hacerme y/o sugerencia acerca de cuál puede ser el error? O bien, alguna mejor forma de hacer lo que necesito? Entiendo que el numero de puerto indicado para la impresión del comprobante "A" es correcto, ya que utilizo el mismo para la impresión de los comprobantes "B", por lo que la comunicación con la Controladora Fiscal se realiza correctamente!
Desde ya, muchísimas gracias por su tiempo!!

Páginas: [1]