Ejemplo n.º 1
0
        public void ImprimeDevolucion(Factura documento)
        {
            if (documento == null)
            {
                throw new Exception("Documento en blanco no se puede imprimir");
            }
            this.ConectarImpresora();
            unsafe
            {
                try
                {
                    int    error  = 0;
                    int    status = 0;
                    string sCmd;
                    bool   bRet = false;
                    bRet = SendCmd(&status, &error, "i01Cedula/Rif:" + documento.CedulaRif);
                    bRet = SendCmd(&status, &error, "i02Razon Social:");
                    sCmd = "i03" + documento.RazonSocial;
                    bRet = SendCmd(&status, &error, sCmd);
                    bRet = SendCmd(&status, &error, "i04Direccion:");
                    sCmd = "i05" + documento.Direccion;
                    bRet = SendCmd(&status, &error, sCmd);
                    if (documento.Direccion != null)
                    {
                        if (documento.Direccion.Length > 40)
                        {
                            sCmd = "i05" + documento.Direccion;
                            bRet = SendCmd(&status, &error, sCmd);
                            bRet = SendCmd(&status, &error, "i06" + documento.Direccion.Substring(40, documento.Direccion.Length - 40));
                        }
                        else
                        {
                            bRet = SendCmd(&status, &error, "i06" + documento.Direccion);
                        }
                    }
                    sCmd = "i07 # FACTURA AFECTADA:" + documento.Numero;
                    bRet = SendCmd(&status, &error, sCmd);

                    // Agrego el servicio en la ultima fila
                    // DS.ImpresionTicket.AddImpresionTicketRow(1, 1, 1, 1, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now, 1, "", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "SERVICIO 10%", 1, documento[0].MontoServicio, 0, "", "", "");
                    double SubTotal = 0;
                    double MontoIva = 0;

                    foreach (FacturasPlato d in documento.FacturasPlatos)
                    {
                        sCmd = "d1";
                        if (d.TasaIva == 0)
                        {
                            sCmd = "d0";
                        }
                        else if (d.TasaIva == 12)
                        {
                            sCmd = "d1";
                        }
                        else if (d.TasaIva == 10)
                        {
                            sCmd = "d2";
                        }
                        SubTotal += ((double)d.Cantidad.GetValueOrDefault(0) * (double)d.PrecioConIva.GetValueOrDefault(0));
                        MontoIva += ((double)d.Cantidad.GetValueOrDefault(0) * ((double)d.PrecioConIva.GetValueOrDefault(0)) - (double)d.Precio.GetValueOrDefault(0));
                        string Precio = "0000000000";
                        if (Basicas.parametros().TipoIva == "INCLUIDO")
                        {
                            Precio = (d.PrecioConIva.GetValueOrDefault(0) * 100).ToString("0000000000");
                        }
                        else
                        {
                            Precio = (d.Precio.GetValueOrDefault(0) * 100).ToString("0000000000");
                        }
                        string Cantidad    = (d.Cantidad.GetValueOrDefault(0) * 1000).ToString("00000000");
                        string Descripcion = d.Descripcion.PadRight(37);
                        if (d.Descripcion.Length <= 37)
                        {
                            bRet = SendCmd(&status, &error, sCmd + Precio + Cantidad + d.Descripcion);
                            if (!bRet)
                            {
                                throw new Exception(string.Format("No es posible imprimir en producto:{0}", d.Descripcion));
                            }
                        }
                        else
                        {
                            bRet = SendCmd(&status, &error, sCmd + Precio + Cantidad + Descripcion.Substring(0, 37));
                            if (!bRet)
                            {
                                throw new Exception(string.Format("No es posible imprimir en producto:{0}", d.Descripcion));
                            }
                            string Descripcion2 = d.Descripcion.Substring(37, (d.Descripcion.Length - 37));
                            bRet = SendCmd(&status, &error, "@" + Descripcion2);
                        }
                    }
                    //if (documento.DescuentoBs != 0)
                    //{

                    //    documento.DescuentoBs = documento.MontoTotal - SubTotal - MontoIva;
                    //    documento.DescuentoBs = documento.DescuentoBs * -1;
                    //    documento.DescuentoPorcentaje = (documento.DescuentoBs * 100) / (SubTotal + MontoIva);
                    //    bRet = SendCmd(&status, &error, "3");
                    //    string DescuentoPorcentaje = ((double)documento.DescuentoPorcentaje * 100).ToString("0000");
                    //    bRet = SendCmd(&status, &error, "p-" + DescuentoPorcentaje);
                    //}
                    //Pagos
                    double TotalPagos = 0;
                    if (documento.Efectivo.GetValueOrDefault(0) != 0)
                    {
                        sCmd        = "f01" + ((double)documento.Efectivo * 100).ToString("000000000000");
                        bRet        = SendCmd(&status, &error, sCmd);
                        TotalPagos += documento.Efectivo.Value;
                    }
                    if (documento.Cheque.GetValueOrDefault(0) != 0)
                    {
                        sCmd        = "f05" + ((double)documento.Cheque * 100).ToString("000000000000");
                        bRet        = SendCmd(&status, &error, sCmd);
                        TotalPagos += documento.Cheque.Value;
                    }
                    if (documento.MontoTotal.GetValueOrDefault(0) > TotalPagos)
                    {
                        sCmd = "f16" + ((double)documento.MontoTotal - (double)TotalPagos * 100).ToString("000000000000");
                        bRet = SendCmd(&status, &error, sCmd);
                    }
                    CargarX(false);
                    iError  = error;
                    iStatus = status;
                    this.LiberarImpresora();
                }
                catch (Exception x)
                {
                    throw x;
                }
            }
        }
Ejemplo n.º 2
0
        public void ImprimeFactura(Factura documento)
        {
            int       error;
            int       status;
            string    sCmd;
            bool      bRet;
            Parametro parametro = Basicas.parametros();

            unsafe
            {
                try
                {
                    if (documento == null)
                    {
                        throw new Exception("Documento en blanco no se puede imprimir");
                    }
                    if (documento.MontoTotal <= 0)
                    {
                        throw new Exception("Esta factura no tiene productos");
                    }
                    ConectarImpresora();
                    //     bRet = SendCmd(&status, &error, "810  ==========");
                    double SubTotal = 0;
                    double MontoIva = 0;
                    bRet = SendCmd(&status, &error, "i01Cedula/Rif:");
                    bRet = SendCmd(&status, &error, "i02" + documento.CedulaRif);
                    bRet = SendCmd(&status, &error, "i03Razon Social:");
                    bRet = SendCmd(&status, &error, "i04" + documento.RazonSocial);
                    if (documento.Direccion != null)
                    {
                        bRet = SendCmd(&status, &error, "i05Direccion:");
                        sCmd = "i06" + documento.Direccion;
                        bRet = SendCmd(&status, &error, sCmd);
                    }
                    sCmd = string.Format("i07{0} {1}", documento.Cajero, documento.NumeroOrden);
                    bRet = SendCmd(&status, &error, sCmd);
                    var Acumulado = from p in documento.FacturasPlatos
                                    group p by new { p.Descripcion, p.TasaIva, p.Precio, p.PrecioConIva } into itemResumido
                        select new
                    {
                        Descripcion  = itemResumido.Key.Descripcion,
                        TasaIva      = itemResumido.Key.TasaIva,
                        Cantidad     = itemResumido.Sum(x => x.Cantidad),
                        Precio       = itemResumido.Key.Precio,
                        PrecioConIva = itemResumido.Key.PrecioConIva
                    };
                    foreach (var d in Acumulado)
                    {
                        sCmd = "!"; // Default parametros.TasaIva
                        if (d.TasaIva == 0)
                        {
                            sCmd = " ";
                        }
                        else if (d.TasaIva != parametro.TasaIva)
                        {
                            sCmd = '"'.ToString();
                        }
                        SubTotal += ((double)d.Cantidad.GetValueOrDefault(0) * (double)d.PrecioConIva.GetValueOrDefault(0));
                        MontoIva += ((double)d.Cantidad.GetValueOrDefault(0) * ((double)d.PrecioConIva.GetValueOrDefault(0)) - (double)d.Precio.GetValueOrDefault(0));
                        string Precio = "0000000000";
                        if (Basicas.parametros().TipoIva == "INCLUIDO")
                        {
                            Precio = (d.PrecioConIva.GetValueOrDefault(0) * 100).ToString("0000000000");
                        }
                        else
                        {
                            Precio = (d.Precio.GetValueOrDefault(0) * 100).ToString("0000000000");
                        }
                        string Cantidad    = (d.Cantidad.GetValueOrDefault(0) * 1000).ToString("00000000");
                        string Descripcion = d.Descripcion.PadRight(37);
                        if (d.Descripcion.Length <= 37)
                        {
                            bRet = SendCmd(&status, &error, sCmd + Precio + Cantidad + d.Descripcion);
                            if (!bRet)
                            {
                                throw new Exception(string.Format("No es posible imprimir en producto:{0}", d.Descripcion));
                            }
                        }
                        else
                        {
                            bRet = SendCmd(&status, &error, sCmd + Precio + Cantidad + Descripcion.Substring(0, 37));
                            if (!bRet)
                            {
                                throw new Exception(string.Format("No es posible imprimir en producto:{0}", d.Descripcion));
                            }
                            string Descripcion2 = d.Descripcion.Substring(37, (d.Descripcion.Length - 37));
                            bRet = SendCmd(&status, &error, "@" + Descripcion2);
                        }
                    }
                    //if (documento.DescuentoBs.GetValueOrDefault(0) != 0)
                    //{

                    //    documento.DescuentoBs = documento.MontoTotal.GetValueOrDefault(0) - SubTotal - MontoIva;
                    //    documento.DescuentoBs = documento.DescuentoBs.GetValueOrDefault(0) * -1;
                    //    documento.DescuentoPorcentaje = (documento.DescuentoBs.GetValueOrDefault(0) * 100) / (SubTotal + MontoIva);
                    //    bRet = SendCmd(&status, &error, "3");
                    //    string DescuentoPorcentaje = (documento.DescuentoPorcentaje.GetValueOrDefault(0) * 100).ToString("0000");
                    //    bRet = SendCmd(&status, &error, "p-" + DescuentoPorcentaje);
                    //}
                    //Pagos
                    // CargarS2();

                    if (documento.MontoServicio.GetValueOrDefault(0) > 0)
                    {
                        sCmd = 0 == 0 ? " " : "!";
                        string Precio = (documento.MontoServicio.GetValueOrDefault(0) * 100).ToString("0000000000");
                        bRet = SendCmd(&status, &error, sCmd + Precio + "00001000" + "SERVICIO 10%");
                    }
                    double TotalPagos = 0;
                    if (documento.Efectivo.GetValueOrDefault(0) != 0)
                    {
                        double pago = documento.Efectivo.GetValueOrDefault(0) + documento.Cambio.GetValueOrDefault(0);
                        sCmd        = "201" + (pago * 100).ToString("000000000000");
                        bRet        = SendCmd(&status, &error, sCmd);
                        TotalPagos += documento.Efectivo.Value;
                    }
                    if (documento.CestaTicket.GetValueOrDefault(0) != 0)
                    {
                        sCmd        = "202" + ((double)documento.CestaTicket * 100).ToString("000000000000");
                        bRet        = SendCmd(&status, &error, sCmd);
                        TotalPagos += documento.CestaTicket.Value;
                    }

                    if (documento.Cheque.GetValueOrDefault(0) != 0)
                    {
                        sCmd        = "205" + ((double)documento.Cheque * 100).ToString("000000000000");
                        bRet        = SendCmd(&status, &error, sCmd);
                        TotalPagos += documento.Cheque.Value;
                    }
                    if (documento.Tarjeta.GetValueOrDefault(0) != 0)
                    {
                        sCmd        = "209" + ((double)documento.Tarjeta * 100).ToString("000000000000");
                        bRet        = SendCmd(&status, &error, sCmd);
                        TotalPagos += documento.Tarjeta.Value;
                    }
                    CargarS2();
                    if (this.montoPorPagar > 0)
                    {
                        sCmd = "116" + (montoPorPagar * 100).ToString("000000000000");
                        bRet = SendCmd(&status, &error, sCmd);
                    }
                    System.Threading.Thread.Sleep(1000);
                    CargarS1(false);
                    documento.Fecha = this.Fecha;
                    //    documento.Hora = this.hora;
                    documento.Numero  = this.numeroFactura;
                    documento.NumeroZ = (this.ultimoZ + 1).ToString("0000");
                    this.LiberarImpresora();
                }
                catch (Exception x)
                {
                    System.Threading.Thread.Sleep(1000);
                    throw x;
                }
            }
        }