Beispiel #1
0
 /// <summary>
 /// Reinstalls the device.
 /// </summary>
 /// <returns></returns>
 public Boolean Reinstall()
 {
     WriteToTrace("####      Method :: Reinstall     ####");
     // Close com port
     Bixolon.CloseFpCtrl();
     // Open com port
     if (Bixolon.OpenFpCtrl(comPort))
     {
         WriteToTrace("Reinstall :: Com port " + comPort + " reopened");
         return(true);
     }
     else
     {
         WriteToTrace("Reinstall :: Com port" + comPort + " not opened");
         if (!Bixolon.CheckFPrinter())
         {
             PStatus = Bixolon.GetPrinterStatus();
             WriteToTrace("Install :: Error, printer status error code: " + PStatus.PrinterErrorCode);
             WriteToTrace("Install :: Error, printer status error description " + PStatus.PrinterErrorDescription);
             return(false);
         }
         return(false);
     }
 }
        public void ImprimeFactura(Factura documento)
        {
            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");
                }
                if (fiscal.Estado != "OK")
                {
                    throw new Exception(string.Format("Error en impresora Fiscal Error {0}, Estado {1} ", fiscal.Status_Error, fiscal.StatusPort));
                }
                double SubTotal = 0;
                double MontoIva = 0;
                System.Threading.Thread.Sleep(500);
                fiscal.SendCmd("i01Cedula/Rif:" + documento.CedulaRif);
                fiscal.SendCmd("i02Razon Social:");
                if (documento.RazonSocial.Length <= 37)
                {
                    fiscal.SendCmd("i03" + documento.RazonSocial);
                }
                else
                {
                    fiscal.SendCmd("i03" + documento.RazonSocial.Substring(0, 36));
                    fiscal.SendCmd("i04" + documento.RazonSocial.Substring(36, (documento.RazonSocial.Length - 36)));
                }
                if (documento.CedulaRif == "V000000000")
                {
                    fiscal.SendCmd("i04 SIN DERECHO A CREDITO FISCAL");
                }
                if (documento.Direccion != null)
                {
                    if (documento.Direccion.Length > 40)
                    {
                        fiscal.SendCmd("i05" + documento.Direccion);
                        fiscal.SendCmd("i06" + documento.Direccion.Substring(40, documento.Direccion.Length - 40));
                    }
                    else
                    {
                        fiscal.SendCmd("i06" + documento.Direccion);
                    }
                }
                if (!string.IsNullOrEmpty(documento.NumeroOrden))
                {
                    fiscal.SendCmd(string.Format("i07       MESA:{0}", documento.NumeroOrden));
                }
                var Acumulado = from p in documento.FacturasPlatos.Where(x => x.Cantidad.GetValueOrDefault(0) >= 0.5)
                                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
                };
                System.Threading.Thread.Sleep(500);
                foreach (var d in Acumulado.Where(x => x.Cantidad.GetValueOrDefault() > 0 && x.Precio.GetValueOrDefault() > 0))
                {
                    var sCmd = "!";     // Default parametros.TasaIva
                    if (d.TasaIva == 0)
                    {
                        sCmd = " ";
                    }
                    if (d.TasaIva == parametro.TasaIvaB)
                    {
                        sCmd = '"'.ToString();
                    }
                    if (d.TasaIva == parametro.TasaIvaC)
                    {
                        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 (parametro.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 = fiscal.SendCmd(sCmd + Precio + Cantidad + d.Descripcion);
                        if (!bRet)
                        {
                            TfhkaNet.IF.PrinterStatus e = fiscal.GetPrinterStatus();
                            // OK.ManejarException(new Exception( string.Format("Estatus:{0},Error:{1}",e.PrinterStatusDescription,e.PrinterErrorDescription)));
                        }
                    }
                    else
                    {
                        bRet = fiscal.SendCmd(sCmd + Precio + Cantidad + Descripcion.Substring(0, 36));
                        string Descripcion2 = d.Descripcion.Substring(36, (d.Descripcion.Length - 36));
                        bRet = fiscal.SendCmd("@" + Descripcion2);
                        if (!bRet)
                        {
                            TfhkaNet.IF.PrinterStatus e = fiscal.GetPrinterStatus();
                            // OK.ManejarException(new Exception( string.Format("Estatus:{0},Error:{1}",e.PrinterStatusDescription,e.PrinterErrorDescription)));
                        }
                    }
                }
                //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 = fiscal.SendCmd( "3");
                //    string DescuentoPorcentaje = (documento.DescuentoPorcentaje.GetValueOrDefault(0) * 100).ToString("0000");
                //    bRet = fiscal.SendCmd( "p-" + DescuentoPorcentaje);
                //}
                //Pagos
                // CargarS2();

                //if (documento.MontoServicio.GetValueOrDefault(0) > 0)
                //{
                //    sCmd =  " ";
                //    string Precio = (documento.MontoServicio.GetValueOrDefault(0) * 100).ToString("0000000000");
                //    bRet = fiscal.SendCmd( sCmd + Precio + "00001000" + "SERVICIO 10%");
                //}
                System.Threading.Thread.Sleep(500);
                double TotalPagos = 0;
                if (documento.Efectivo.GetValueOrDefault(0) != 0)
                {
                    double x = documento.Efectivo.GetValueOrDefault(0) + documento.Cambio.GetValueOrDefault(0);
                    fiscal.SendCmd("201" + (x * 100).ToString("000000000000"));
                    TotalPagos += documento.Efectivo.Value;
                }
                if (documento.CestaTicket.GetValueOrDefault(0) != 0)
                {
                    fiscal.SendCmd("202" + ((double)documento.CestaTicket * 100).ToString("000000000000"));
                    TotalPagos += documento.CestaTicket.Value;
                }
                //
                if (documento.Cheque.GetValueOrDefault(0) != 0)
                {
                    fiscal.SendCmd("205" + ((double)documento.Cheque * 100).ToString("000000000000"));
                    TotalPagos += documento.Cheque.Value;
                }
                if (documento.Tarjeta.GetValueOrDefault(0) != 0)
                {
                    fiscal.SendCmd("209" + ((double)documento.Tarjeta * 100).ToString("000000000000"));
                    TotalPagos += documento.Tarjeta.Value;
                }
                if (documento.Credito.GetValueOrDefault(0) != 0)
                {
                    fiscal.SendCmd("216" + ((double)documento.Credito * 100).ToString("000000000000"));
                    TotalPagos += documento.Credito.Value;
                }
                System.Threading.Thread.Sleep(1000);
                CargarS2();
                if (MontoPorPagar > 0)
                {
                    fiscal.SendCmd("115" + (MontoPorPagar.Value * 100).ToString("000000000000"));
                }
                System.Threading.Thread.Sleep(1000);
                CargarS1(false);
                documento.Fecha  = Fecha;
                documento.Hora   = DateTime.Now;
                documento.Numero = NumeroFactura;
                //   documento.MontoGravable = SubTotalBases;
                //   documento.MontoIva = MontoIva;
                //   documento.MontoTotal = SubTotalBases + MontoIva;
                documento.NumeroZ       = (ultimoZ.Value).ToString("0000");
                documento.MaquinaFiscal = NumeroRegistro;
            }
            catch (TfhkaNet.IF.PrinterException x)
            {
                throw new Exception(string.Format("Error de impresora: {0}, estatus {1}", x.Message, fiscal.Estado));
            }
            catch (Exception x)
            {
                throw new Exception(string.Format("Error de conexión\n{0}\nEstatus {1}", x.Message, fiscal.Status_Error));
            }
        }