Ejemplo n.º 1
0
        public override void ActualizarControl()
        {
            Lbl.Comprobantes.PuntoDeVenta Pv = this.Elemento as Lbl.Comprobantes.PuntoDeVenta;

            EntradaPrefijo.ValueInt = Pv.Prefijo;
            EntradaNumero.ValueInt  = Pv.Numero;
            if (string.IsNullOrEmpty(Pv.TipoFac))
            {
                EntradaTipoFac.TextKey = "*";
            }
            else
            {
                EntradaTipoFac.TextKey = Pv.TipoFac;
            }
            EntradaSucursal.Elemento  = Pv.Sucursal;
            EntradaImpresora.Elemento = Pv.Impresora;

            EntradaTipo.ValueInt = (int)(Pv.Tipo);

            EntradaDeTalonario.Value = Pv.UsaTalonario;
            EntradaEstacion.Text     = Pv.Estacion;
            EntradaCarga.ValueInt    = Pv.CargaManual ? 1 : 0;

            EntradaModelo.ValueInt = ((int)(Pv.ModeloImpresoraFiscal));
            EntradaPuerto.ValueInt = Pv.Puerto;
            EntradaBps.ValueInt    = Pv.Bps;

            base.ActualizarControl();
        }
Ejemplo n.º 2
0
        public override void ActualizarElemento()
        {
            Lbl.Comprobantes.PuntoDeVenta Pv = this.Elemento as Lbl.Comprobantes.PuntoDeVenta;

            Pv.Prefijo = EntradaPrefijo.ValueInt;
            Pv.Numero  = EntradaNumero.ValueInt;
            if (EntradaTipoFac.TextKey == "*")
            {
                Pv.TipoFac = "";
            }
            else
            {
                Pv.TipoFac = EntradaTipoFac.TextKey;
            }
            Pv.Sucursal  = EntradaSucursal.Elemento as Lbl.Entidades.Sucursal;
            Pv.Impresora = EntradaImpresora.Elemento as Lbl.Impresion.Impresora;

            Pv.Tipo = (Lbl.Comprobantes.TipoPv)(EntradaTipo.ValueInt);

            Pv.UsaTalonario = EntradaDeTalonario.Value;
            Pv.Estacion     = EntradaEstacion.Text;
            Pv.CargaManual  = EntradaCarga.ValueInt == 1;

            Pv.ModeloImpresoraFiscal = (Lbl.Impresion.ModelosFiscales)(EntradaModelo.ValueInt);
            Pv.Puerto = EntradaPuerto.ValueInt;
            Pv.Bps    = EntradaBps.ValueInt;

            base.ActualizarElemento();
        }
Ejemplo n.º 3
0
        public override void OnLoad()
        {
            if (this.GetFieldValue <int>("id_tipo") == 0)
            {
                this.Tipo = null;
            }
            else
            {
                this.Tipo = new Lbl.Comprobantes.Tipo(this.Connection, this.GetFieldValue <int>("id_tipo"));
            }

            if (this.GetFieldValue <int>("id_impresora") == 0)
            {
                this.Impresora = null;
            }
            else
            {
                this.Impresora = new Impresion.Impresora(this.Connection, this.GetFieldValue <int>("id_impresora"));
            }

            if (this.GetFieldValue <int>("id_pv") == 0)
            {
                this.PuntoDeVenta = null;
            }
            else
            {
                this.PuntoDeVenta = new Comprobantes.PuntoDeVenta(this.Connection, this.GetFieldValue <int>("id_pv"));
            }

            if (this.GetFieldValue <int>("id_sucursal") == 0)
            {
                this.Sucursal = null;
            }
            else
            {
                this.Sucursal = new Entidades.Sucursal(this.Connection, this.GetFieldValue <int>("id_sucursal"));
            }

            base.OnLoad();
        }
Ejemplo n.º 4
0
        public override Lfx.Types.OperationResult BeforePrint()
        {
            Lbl.Comprobantes.ComprobanteConArticulos Comprob = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos;
            if (Comprob.Articulos.Count >= 1 && (Comprob.Articulos[0].Cantidad < 0 || Comprob.Articulos[0].ImporteUnitario < 0))
            {
                return(new Lfx.Types.FailureOperationResult("El primer ítem de la factura no puede ser negativo. Utilice los ítem negativos en último lugar."));
            }

            Comprob.Cliente.Cargar();

            if (Comprob.FormaDePago == null)
            {
                return(new Lfx.Types.FailureOperationResult("Por favor seleccione la forma de pago."));
            }

            if (Comprob.Cliente == null)
            {
                return(new Lfx.Types.FailureOperationResult("Por favor seleccione un cliente."));
            }

            if (Comprob.Tipo == null)
            {
                return(new Lfx.Types.FailureOperationResult("Por favor seleccione el tipo de comprobante."));
            }

            if (Lbl.Sys.Config.Pais.Id == 1)
            {
                // Verificaciones especiales para Argentina
                if (Comprob.Tipo.EsFacturaNCoND && Comprob.Cliente.SituacionTributaria != null && Comprob.Tipo.Letra != Comprob.Cliente.LetraPredeterminada())
                {
                    Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog(@"La situación tributaria del cliente y el tipo de comprobante no se corresponden.
Un cliente " + Comprob.Cliente.SituacionTributaria.ToString() + @" debería llevar un comprobante tipo " + Comprob.Cliente.LetraPredeterminada() + @". No debería continuar con la impresión. 
¿Desea continuar de todos modos?", "Tipo de comprobante incorrecto");
                    Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;
                    if (Pregunta.ShowDialog() == DialogResult.Cancel)
                    {
                        return(new Lfx.Types.FailureOperationResult("Corrija la situación tributaria del cliente o el tipo de comprobante."));
                    }
                }

                if (Comprob.Tipo.Letra.ToUpperInvariant() == "A")
                {
                    if (Comprob.Cliente.ClaveTributaria == null || Comprob.Cliente.ClaveTributaria.EsValido() == false)
                    {
                        return(new Lfx.Types.FailureOperationResult("El cliente no tiene una CUIT válida. Por favor edite el cliente y escriba una CUIT válida."));
                    }
                }
                else if (Comprob.Tipo.Letra == "B")
                {
                    //Si es factura B de más de $ 1000, debe llevar el Nº de DNI
                    if (Comprob.Total >= 1000 && Comprob.Cliente.NumeroDocumento.Length < 5 &&
                        (Comprob.Cliente.ClaveTributaria == null || Comprob.Cliente.ClaveTributaria.EsValido() == false))
                    {
                        return(new Lfx.Types.FailureOperationResult("Para Facturas B de $ 1.000 o más debe proporcionar el número de DNI/CUIT del cliente."));
                    }
                    //Si es factura B de más de $ 1000, debe llevar domicilio
                    if (Comprob.Total >= 1000 && Comprob.Cliente.Domicilio.Length < 1)
                    {
                        return(new Lfx.Types.FailureOperationResult("Para Facturas B de $ 1.000 o más debe proporcionar el domicilio del cliente."));
                    }
                }
            }

            if (EntradaProductos.MostrarExistencias && this.Tipo.MueveExistencias < 0 && Comprob.HayExistencias() == false)
            {
                Lui.Forms.YesNoDialog OPregunta = new Lui.Forms.YesNoDialog("Las existencias actuales no son suficientes para cubrir la operación que intenta realizar.\n¿Desea continuar de todos modos?", "No hay existencias suficientes");
                OPregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;
                if (OPregunta.ShowDialog() == DialogResult.Cancel)
                {
                    return(new Lfx.Types.FailureOperationResult("No se imprimir el comprobante por falta de existencias."));
                }
            }

            if (Comprob.Cliente.Id != 999 && (Comprob.Tipo.EsFactura || Comprob.Tipo.EsNotaDebito))
            {
                decimal SaldoCtaCte = Comprob.Cliente.CuentaCorriente.ObtenerSaldo(false);

                if (Comprob.FormaDePago != null && Comprob.FormaDePago.Tipo == Lbl.Pagos.TiposFormasDePago.CuentaCorriente)
                {
                    decimal LimiteCredito = Comprob.Cliente.LimiteCredito;

                    if (LimiteCredito == 0)
                    {
                        LimiteCredito = Lfx.Types.Parsing.ParseCurrency(Lfx.Workspace.Master.CurrentConfig.ReadGlobalSetting <string>("Sistema.Cuentas.LimiteCreditoPredet", "0"));
                    }

                    if (LimiteCredito != 0 && (Comprob.Total + SaldoCtaCte) > LimiteCredito)
                    {
                        return(new Lfx.Types.FailureOperationResult("El valor de la factura y/o el saldo en cuenta corriente supera el límite de crédito de este cliente."));
                    }
                }
                else
                {
                    if (SaldoCtaCte < 0)
                    {
                        using (SaldoEnCuentaCorriente FormularioError = new SaldoEnCuentaCorriente()) {
                            switch (FormularioError.ShowDialog())
                            {
                            case DialogResult.Yes:
                                //Corregir el problema
                                this.EntradaFormaPago.ValueInt = 3;
                                this.Save();
                                Comprob.FormaDePago.Tipo = Lbl.Pagos.TiposFormasDePago.CuentaCorriente;
                                break;

                            case DialogResult.No:
                                //Continuar. No corregir el problema.
                                break;

                            default:
                                //Cancelar y volver a la edición.
                                return(new Lfx.Types.CancelOperationResult());
                            }
                        }
                    }
                }
            }

            if (Comprob.PV < 1)
            {
                return(new Lfx.Types.FailureOperationResult("Por favor escriba un punto de venta válido."));
            }

            if (Lbl.Comprobantes.PuntoDeVenta.TodosPorNumero.ContainsKey(Comprob.PV) == false)
            {
                // No existe el PV... vacío la caché antes intentar de nuevo y dar un error
                Lbl.Comprobantes.PuntoDeVenta.TodosPorNumero.Clear();
                if (Lbl.Comprobantes.PuntoDeVenta.TodosPorNumero.ContainsKey(Comprob.PV) == false)
                {
                    return(new Lfx.Types.FailureOperationResult("El punto de venta no existe. Si desea definir un nuevo punto de venta, utilice el menú Comprobantes -> Tablas -> Puntos de venta."));
                }
            }

            Lbl.Comprobantes.PuntoDeVenta Pv = Lbl.Comprobantes.PuntoDeVenta.TodosPorNumero[Comprob.PV];
            if (Pv.Tipo == Lbl.Comprobantes.TipoPv.Talonario)
            {
                Lbl.Impresion.Impresora Impresora = Comprob.ObtenerImpresora();

                if (Pv.CargaManual && (Impresora == null || Impresora.CargaPapel == Lbl.Impresion.CargasPapel.Automatica))
                {
                    Lui.Printing.ManualFeedDialog FormularioCargaManual = new Lui.Printing.ManualFeedDialog();
                    FormularioCargaManual.DocumentName = Comprob.Tipo.ToString() + " " + Comprob.PV.ToString("0000") + "-" + Lbl.Comprobantes.Numerador.ProximoNumero(Comprob).ToString("00000000");
                    // Muestro el nombre de la impresora
                    if (Impresora != null)
                    {
                        FormularioCargaManual.PrinterName = Impresora.Nombre;
                    }
                    else
                    {
                        System.Drawing.Printing.PrinterSettings objPrint = new System.Drawing.Printing.PrinterSettings();
                        FormularioCargaManual.PrinterName = objPrint.PrinterName;
                    }
                    if (FormularioCargaManual.ShowDialog() == DialogResult.Cancel)
                    {
                        return(new Lfx.Types.CancelOperationResult());
                    }
                }
            }

            if (Comprob.Tipo.MueveExistencias != 0)
            {
                Lfx.Types.OperationResult Res = Comprob.VerificarSeries();
                if (Res.Success == false)
                {
                    return(Res);
                }
            }

            return(base.BeforePrint());
        }
Ejemplo n.º 5
0
                public override void OnLoad()
                {
                        if (this.GetFieldValue<int>("id_tipo") == 0)
                                this.Tipo = null;
                        else
                                this.Tipo = new Lbl.Comprobantes.Tipo(this.Connection, this.GetFieldValue<int>("id_tipo"));

                        if (this.GetFieldValue<int>("id_impresora") == 0)
                                this.Impresora = null;
                        else
                                this.Impresora = new Impresion.Impresora(this.Connection, this.GetFieldValue<int>("id_impresora"));

                        if (this.GetFieldValue<int>("id_pv") == 0)
                                this.PuntoDeVenta = null;
                        else
                                this.PuntoDeVenta = new Comprobantes.PuntoDeVenta(this.Connection, this.GetFieldValue<int>("id_pv"));

                        if (this.GetFieldValue<int>("id_sucursal") == 0)
                                this.Sucursal = null;
                        else
                                this.Sucursal = new Entidades.Sucursal(this.Connection, this.GetFieldValue<int>("id_sucursal"));

                        base.OnLoad();
                }