private int? ImprimirNoFiscal(List<LINEA_VENTA> ImprimirLineasEnGrilla)
        {
            if (!ImpresoraOK)
            {
                MostrarMensajeInformativo("Falla de impresora");
                return null;
            }
            else
            {
                #region IMPRIME DOCUMENTO NO FISCAL

                var noFiscal = new DocumentoNoFiscalTicket();

                noFiscal.DescripcionCabecera1 = "---------------------------";
                noFiscal.DescripcionCabecera2 = "-- ";
                noFiscal.DescripcionCabecera3 = "-- ";
                noFiscal.DescripcionCabecera4 = "---------------------------";

                noFiscal.items = new List<DocumentoNoFiscalTicketItem>();
                foreach (LINEA_VENTA LineaEnGrilla in ImprimirLineasEnGrilla)
                {
                    var item = new DocumentoNoFiscalTicketItem();
                    item.DescripcionExtra1 = (LineaEnGrilla.LIN_ESTADOPROMO == true) ? "Articulo en PROMOCION" : "";
                    item.DescripcionExtra2 = "";
                    item.DescripcionExtra3 = "";
                    item.DescripcionExtra4 = "";
                    item.DescripcionItem = (LineaEnGrilla.LIN_DESCRESUMIDA.Length > 27) ? LineaEnGrilla.LIN_DESCRESUMIDA.Substring(0, 27) : LineaEnGrilla.LIN_DESCRESUMIDA.ToString();
                    item.Cantidad = (LineaEnGrilla.LIN_CANTIDAD * 10000).ToString("#");
                    item.PrecioUnitario = (LineaEnGrilla.LIN_PRECIOUNIDAD * 10000).ToString("#");
                    item.TasaIva = (LineaEnGrilla.LIN_TIVA_PORCENTAJE * 100).ToString("#");
                    item.ImpuestosInternosFijos = "0";
                    item.CoeficienteImpuestosInternosPuntuales = "0";

                    noFiscal.items.Add(item);
                }

                //DESCUENTO
                noFiscal.DescuentoDescripcion = "DESCUENTO";
                noFiscal.DescuentoMonto = (Convert.ToDecimal(txtDescuento.Text) * 10000).ToString("#");

                //PAGO
                noFiscal.PagoDescripcionExtra = "";
                noFiscal.PagoDescripcion = lblFormaPago.Text;

                noFiscal.SubTotalMonto = txtSubtotal.Text;
                noFiscal.TotalMonto = txtTotal.Text;

                //CIERRE
                noFiscal.DescripcionPie1 = "";
                noFiscal.DescripcionPie2 = "";
                noFiscal.DescripcionPie3 = "";

                var retornoImpresion = frmImpresoraFiscal.DocumentoNoFiscalTicket(noFiscal);
                if (retornoImpresion < 0)
                    return null;

                MostrarMensajeInformativo("Se imprimió correctamente el Documento no Fiscal Nº: " + retornoImpresion);

                #endregion

                return retornoImpresion;
            }
        }
        private int? ControlarImprimirEnvase(List<LINEA_VENTA> ImprimirLineasEnGrilla)
        {
            //controlo si existen envases
            if (!ImprimirLineasEnGrilla.Any(x => x.ENV_ID != null))
                return null;

            List<LINEA_VENTA> listaEnvase = new List<LINEA_VENTA>();
            decimal subTotal = 0;
            decimal total = 0;
            foreach (var item in ImprimirLineasEnGrilla)
            {
                if (item.ENV_ID != null)
                {
                    listaEnvase.Add(item);
                }
            }

            subTotal = listaEnvase.Sum(x => x.LIN_TOTAL);
            total = subTotal;

            var comprobante = cTIPO_COMPROBANTES.ObtenerPorDescripcion(Constantes.ValeEnvase);
            int nroComprobante = (int)comprobante.TIC_ULTIMONUMERO;
            comprobante.TIC_ULTIMONUMERO = nroComprobante + 1;
            cTIPO_COMPROBANTES.Modificacion(comprobante);

            var nroCompEnvase = comprobante.TIC_ULTIMONUMERO;

            if (!ImpresoraOK)
            {
                MostrarMensajeInformativo(string.Format("Por falla de impresora se generó la devolución de envase Nro: {0}", nroCompEnvase));
                return nroCompEnvase;
            }
            else
            {
                #region IMPRIME DOCUMENTO NO FISCAL

                var noFiscal = new DocumentoNoFiscalTicket();

                noFiscal.DescripcionCabecera1 = "---------------------------";
                noFiscal.DescripcionCabecera2 = "-- Devolucion de Envases";
                noFiscal.DescripcionCabecera3 = string.Format("-- Nro: {0}", TipoComprobante.TIC_ULTIMONUMERO);
                noFiscal.DescripcionCabecera4 = "---------------------------";

                noFiscal.items = new List<DocumentoNoFiscalTicketItem>();
                foreach (LINEA_VENTA LineaEnGrilla in listaEnvase)
                {
                    var item = new DocumentoNoFiscalTicketItem();
                    item.DescripcionItem = (LineaEnGrilla.LIN_DESCRESUMIDA.Length > 27) ? LineaEnGrilla.LIN_DESCRESUMIDA.Substring(0, 27) : LineaEnGrilla.LIN_DESCRESUMIDA.ToString();
                    item.Cantidad = LineaEnGrilla.LIN_CANTIDAD.ToString("0.000");
                    item.PrecioUnitario = LineaEnGrilla.LIN_PRECIOUNIDAD.ToString("0.000");
                    noFiscal.items.Add(item);
                }

                //DESCUENTO
                noFiscal.DescuentoDescripcion = "";
                noFiscal.DescuentoMonto = "";

                //PAGO
                noFiscal.PagoDescripcionExtra = "";
                noFiscal.PagoDescripcion = "";

                noFiscal.SubTotalMonto = subTotal.ToString("0.000");
                noFiscal.TotalMonto = total.ToString("0.000");

                //CIERRE
                noFiscal.DescripcionPie1 = "Para retornar los envases";
                noFiscal.DescripcionPie2 = "debe presentar el comprobante.";
                noFiscal.DescripcionPie3 = "";

                var retornoImpresion = frmImpresoraFiscal.DocumentoNoFiscalTicket(noFiscal);
                if (retornoImpresion < 0)
                    return nroCompEnvase;

                //MostrarMensajeInformativo("Se imprimió correctamente Nº: " + retornoImpresion);

                #endregion
            }

            return nroCompEnvase;
        }