예제 #1
0
        public void MostrarFacturas()
        {
            ListaFacturas.BeginUpdate();
            ListaFacturas.Items.Clear();
            Lbl.Comprobantes.Recibo Rec = this.Elemento as Lbl.Comprobantes.Recibo;

            foreach (Lbl.Comprobantes.ComprobanteImporte CompImp in Rec.Facturas)
            {
                Lbl.Comprobantes.ComprobanteConArticulos Fc = CompImp.Comprobante;
                ListViewItem AgregarFactura = ListaFacturas.Items.Add(Fc.GetHashCode().ToString());
                AgregarFactura.SubItems.Add(new ListViewItem.ListViewSubItem(AgregarFactura, Fc.ToString()));
                AgregarFactura.SubItems.Add(new ListViewItem.ListViewSubItem(AgregarFactura, Lfx.Types.Formatting.FormatDate(Fc.Fecha)));
                AgregarFactura.SubItems.Add(new ListViewItem.ListViewSubItem(AgregarFactura, Lfx.Types.Formatting.FormatCurrency(Fc.Total, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales)));
                AgregarFactura.SubItems.Add(new ListViewItem.ListViewSubItem(AgregarFactura, Lfx.Types.Formatting.FormatCurrency(Fc.Total - Fc.ImporteCancelado, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales)));
            }

            LabelAgregarFacturas.Visible = ListaFacturas.Items.Count == 0 && this.Elemento.Existe == false;
            BotonQuitarFactura.Visible   = ListaFacturas.Items.Count > 0;

            if (ListaFacturas.Items.Count > 0 && ListaFacturas.SelectedItems.Count == 0)
            {
                ListaFacturas.Items[ListaFacturas.Items.Count - 1].Selected = true;
                ListaFacturas.Items[ListaFacturas.Items.Count - 1].Focused  = true;
            }

            EtiquetaFacturasImporte.Text = Lfx.Types.Formatting.FormatCurrency(Rec.Facturas.ImporteImpago, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

            ListaFacturas.EndUpdate();
        }
예제 #2
0
        internal Lfx.Types.OperationResult AgregarFactura(int idFactura)
        {
            Lbl.Comprobantes.Recibo Rec = this.Elemento as Lbl.Comprobantes.Recibo;
            if (Rec.Facturas == null)
            {
                Rec.Facturas = new Lbl.Comprobantes.ColeccionComprobanteImporte();
            }
            else
            {
                foreach (Lbl.Comprobantes.ComprobanteImporte CompImp in Rec.Facturas)
                {
                    Lbl.Comprobantes.ComprobanteConArticulos Fc = CompImp.Comprobante;
                    if (Fc.Id == idFactura)
                    {
                        return(new Lfx.Types.FailureOperationResult("La factura seleccionada ya está en la lista."));
                    }
                }
            }
            Lbl.Comprobantes.ComprobanteConArticulos Fac = new Lbl.Comprobantes.ComprobanteConArticulos(Rec.Connection, idFactura);
            Rec.Facturas.AddWithValue(Fac, Fac.ImporteImpago);

            if (EntradaCliente.ValueInt <= 0)
            {
                EntradaCliente.Elemento = Fac.Cliente;
            }

            this.MostrarFacturas();

            return(new Lfx.Types.SuccessOperationResult());
        }
예제 #3
0
 public Lfx.Types.OperationResult Entregar(Lbl.Comprobantes.Recibo reciboDePago)
 {
     this.Estado = 11;
     this.AgregarComentario("Entregado s/" + reciboDePago.ToString());
     this.ReciboPago = reciboDePago;
     return(this.Guardar());
 }
예제 #4
0
        private void BotonValoresAgregar_Click(object sender, System.EventArgs e)
        {
            if (this.DePago)
            {
                Comprobantes.Recibos.EditarPago FormularioEditarPago = new Comprobantes.Recibos.EditarPago();
                FormularioEditarPago.Connection = this.Connection;
                FormularioEditarPago.Pago.FromPago(new Lbl.Comprobantes.Pago(this.Connection, Lbl.Pagos.TiposFormasDePago.Efectivo));
                FormularioEditarPago.Pago.ObsVisible = false;

                if (FormularioEditarPago.ShowDialog() == DialogResult.OK)
                {
                    Lbl.Comprobantes.Pago   MiPago = FormularioEditarPago.Pago.ToPago(this.Connection);
                    Lbl.Comprobantes.Recibo Rec    = this.Elemento as Lbl.Comprobantes.Recibo;
                    Rec.Connection = this.Connection;
                    Rec.Pagos.Add(MiPago);
                    this.MostrarValores();
                }
            }
            else
            {
                Comprobantes.Recibos.EditarCobro FormularioEditarCobro = new Comprobantes.Recibos.EditarCobro();
                FormularioEditarCobro.Connection = this.Connection;
                FormularioEditarCobro.Cobro.FromCobro(new Lbl.Comprobantes.Cobro(this.Connection, Lbl.Pagos.TiposFormasDePago.Efectivo));
                FormularioEditarCobro.Cobro.ObsVisible = false;

                if (FormularioEditarCobro.ShowDialog() == DialogResult.OK)
                {
                    Lbl.Comprobantes.Cobro  MiCobro = FormularioEditarCobro.Cobro.ToCobro(this.Connection);
                    Lbl.Comprobantes.Recibo Rec     = this.Elemento as Lbl.Comprobantes.Recibo;
                    Rec.Cobros.Add(MiCobro);
                    this.MostrarValores();
                }
            }
        }
예제 #5
0
                public void Cargar(int idRecibo)
                {
                        Lbl.Comprobantes.Recibo Rec = null;

                        if (idRecibo != 0)
                                Rec = new Lbl.Comprobantes.Recibo(this.Connection, idRecibo);

                        if (Rec != null && Rec.Existe) {
                                EntradaFecha.Text = Lfx.Types.Formatting.FormatDate(Rec.Fecha);

                                EntradaImporte.Text = Lfx.Types.Formatting.FormatCurrency(Rec.Total, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);
                                EntradaCliente.Text = Rec.Cliente.ToString();

                                EntradaPV.Text = Rec.PV.ToString();
                                EntradaNumero.Text = Rec.Numero.ToString();
                                EntradaTipo.TextKey = Rec.Tipo.Nomenclatura;

                                if (Rec.Anulado) {
                                        EtiquetaAviso.Text = "El comprobante ya fue anulado y no puede anularse nuevamente.";
                                        OkButton.Visible = false;
                                } else {
                                        EtiquetaAviso.Text = "Recuerde que necesitar archivar todas las copias del comprobante anulado.";
                                        OkButton.Visible = true;
                                }
                        } else {
                                EtiquetaAviso.Text = "";
                                EntradaFecha.Text = "";
                                EntradaImporte.Text = "";
                                EntradaCliente.Text = "";
                                OkButton.Visible = false;
                        }
                }
예제 #6
0
        private void BotonFacturasQuitar_Click(object sender, System.EventArgs e)
        {
            if (ListaFacturas.SelectedItems.Count == 0 && ListaFacturas.Items.Count > 0)
            {
                ListaFacturas.Items[ListaFacturas.Items.Count].Selected = true;
            }

            if (ListaFacturas.SelectedItems.Count == 0)
            {
                Lui.Forms.MessageBox.Show("Debe seleccionar una factura para quitar.", "Error");
            }
            else
            {
                Lbl.Comprobantes.Recibo Rec    = this.Elemento as Lbl.Comprobantes.Recibo;
                string HashFacturaSeleccionada = ListaFacturas.SelectedItems[0].Text;
                for (int i = 0; i < Rec.Facturas.Count; i++)
                {
                    if (Rec.Facturas[i].GetHashCode().ToString() == HashFacturaSeleccionada)
                    {
                        Rec.Facturas.RemoveAt(i);
                        break;
                    }
                }
                this.MostrarFacturas();
                if (ListaFacturas.Items.Count == 1)
                {
                    ListaFacturas.Items[0].Selected = true;
                }
            }
        }
예제 #7
0
        public void Movimiento(bool auto, Lbl.Cajas.Concepto concepto, string textoConcepto,
                               Lbl.Personas.Persona cliente, decimal importe, string obs,
                               Lbl.Comprobantes.ComprobanteConArticulos factura, Lbl.Comprobantes.Recibo recibo, string comprobantes)
        {
            if (Lbl.Sys.Config.Actual.UsuarioConectado.TienePermiso(this.Caja, Lbl.Sys.Permisos.Operaciones.Mover) == false)
            {
                throw new Lfx.Types.Exceptions.AccessDeniedException("No tiene permiso para hacer movimientos en la caja solicitada");
            }

            decimal SaldoActual = this.ObtenerSaldo(true);

            qGen.IStatement InsertarMovimiento = new qGen.Insert("cajas_movim");
            InsertarMovimiento.ColumnValues.AddWithValue("id_caja", this.Caja.Id);
            InsertarMovimiento.ColumnValues.AddWithValue("id_sucursal", null);
            InsertarMovimiento.ColumnValues.AddWithValue("auto", auto ? 1 : 0);
            if (concepto == null)
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_concepto", null);
            }
            else
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_concepto", concepto.Id);
            }
            InsertarMovimiento.ColumnValues.AddWithValue("concepto", textoConcepto);
            InsertarMovimiento.ColumnValues.AddWithValue("id_persona", Lbl.Sys.Config.Actual.UsuarioConectado.Id);
            if (cliente == null)
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_cliente", null);
            }
            else
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_cliente", cliente.Id);
            }
            InsertarMovimiento.ColumnValues.AddWithValue("fecha", new qGen.SqlExpression("NOW()"));
            InsertarMovimiento.ColumnValues.AddWithValue("importe", importe);
            if (factura == null)
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_comprob", null);
            }
            else
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_comprob", factura.Id);
            }
            if (recibo == null)
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_recibo", null);
            }
            else
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_recibo", recibo.Id);
            }
            InsertarMovimiento.ColumnValues.AddWithValue("comprob", comprobantes);
            InsertarMovimiento.ColumnValues.AddWithValue("saldo", SaldoActual + importe);
            InsertarMovimiento.ColumnValues.AddWithValue("obs", obs);
            //System.Data.IDbTransaction Trans =this.Connection.BeginTransaction();
            this.Connection.ExecuteNonQuery(InsertarMovimiento);
            // Trans.Commit();
        }
예제 #8
0
 public override void AfterSave(IDbTransaction transaction)
 {
     Lbl.Comprobantes.Recibo Rec = this.Elemento as Lbl.Comprobantes.Recibo;
     if (Rec.Tipo.ImprimirAlGuardar)
     {
         Lazaro.Base.Util.Impresion.Comprobantes.ImpresorRecibo Impresor = new Lazaro.Base.Util.Impresion.Comprobantes.ImpresorRecibo(Rec, transaction);
         Impresor.Imprimir();
     }
     base.AfterSave(transaction);
 }
예제 #9
0
파일: Caja.cs 프로젝트: solutema/ultralight
        public void Movimiento(bool auto, Lbl.Cajas.Concepto concepto, string textoConcepto,
                               Lbl.Personas.Persona cliente, decimal importe, string obs,
                               Lbl.Comprobantes.ComprobanteConArticulos factura, Lbl.Comprobantes.Recibo recibo, string comprobantes)
        {
            if (Lbl.Sys.Config.Actual.UsuarioConectado.TienePermiso(this, Lbl.Sys.Permisos.Operaciones.Mover) == false)
            {
                throw new Lfx.Types.Exceptions.AccessDeniedException("No tiene permiso para hacer movimientos en la caja solicitada");
            }

            decimal SaldoActual = this.ObtenerSaldo(true);

            qGen.TableCommand InsertarMovimiento = new qGen.Insert(this.Connection, "cajas_movim");
            InsertarMovimiento.Fields.AddWithValue("id_caja", this.Id);
            InsertarMovimiento.Fields.AddWithValue("auto", auto ? 1 : 0);
            if (concepto == null)
            {
                InsertarMovimiento.Fields.AddWithValue("id_concepto", null);
            }
            else
            {
                InsertarMovimiento.Fields.AddWithValue("id_concepto", concepto.Id);
            }
            InsertarMovimiento.Fields.AddWithValue("concepto", textoConcepto);
            InsertarMovimiento.Fields.AddWithValue("id_persona", Lbl.Sys.Config.Actual.UsuarioConectado.Id);
            if (cliente == null)
            {
                InsertarMovimiento.Fields.AddWithValue("id_cliente", null);
            }
            else
            {
                InsertarMovimiento.Fields.AddWithValue("id_cliente", cliente.Id);
            }
            InsertarMovimiento.Fields.AddWithValue("fecha", qGen.SqlFunctions.Now);
            InsertarMovimiento.Fields.AddWithValue("importe", importe);
            if (factura == null)
            {
                InsertarMovimiento.Fields.AddWithValue("id_comprob", null);
            }
            else
            {
                InsertarMovimiento.Fields.AddWithValue("id_comprob", factura.Id);
            }
            if (recibo == null)
            {
                InsertarMovimiento.Fields.AddWithValue("id_recibo", null);
            }
            else
            {
                InsertarMovimiento.Fields.AddWithValue("id_recibo", recibo.Id);
            }
            InsertarMovimiento.Fields.AddWithValue("comprob", comprobantes);
            InsertarMovimiento.Fields.AddWithValue("saldo", SaldoActual + importe);
            InsertarMovimiento.Fields.AddWithValue("obs", obs);
            this.Connection.Execute(InsertarMovimiento);
        }
예제 #10
0
 public void Movimiento(bool auto,
                        Lbl.Cajas.Concepto concepto,
                        string textoConcepto,
                        decimal importeDebito,
                        string obs,
                        Lbl.Comprobantes.ComprobanteConArticulos comprob,
                        Lbl.Comprobantes.Recibo recibo,
                        string textoComprob)
 {
     this.Movimiento(auto, concepto, textoConcepto, importeDebito, obs, comprob, recibo, textoComprob, null);
 }
예제 #11
0
 public void Movimiento(bool auto, Lbl.Cajas.Concepto concepto, string textoConcepto,
                        Lbl.Personas.Persona cliente, decimal importe, string obs,
                        Lbl.Comprobantes.ComprobanteConArticulos factura, Lbl.Comprobantes.Recibo recibo, string comprobantes)
 {
     CajaController = new Lazaro.Base.Controller.CajaController(
         new Lazaro.Orm.EntityManager(this.Connection, Lfx.Workspace.Master.MetadataFactory),
         this
         );
     CajaController.Movimiento(auto, concepto, textoConcepto,
                               cliente, importe, obs,
                               factura, recibo, comprobantes);
 }
예제 #12
0
 /// <summary>
 /// Asienta un movimiento en la cuenta corriente, y cancela comprobantes asociados.
 /// </summary>
 /// <param name="auto">Indica si es un movimiento automático (generado por el sistema) o manual (generado por el usuario).</param>
 /// <param name="concepto">El concepto bajo el cual se realiza el movimiento.</param>
 /// <param name="textoConcepto">El texto que describe al concepto.</param>
 /// <param name="importeDebito">El importe a debitar de la cuenta. Un importe negativo indica un crédito.</param>
 /// <param name="obs">Observaciones.</param>
 /// <param name="comprob">El comprobante asociado a este movimiento.</param>
 /// <param name="recibo">El recibo asociado a este movimiento.</param>
 /// <param name="textoComprob">Un texto sobre los comprobantes asociados al sistema.</param>
 /// <param name="extras">Colección de campos adicionales para el registro.</param>
 public void AsentarMovimiento(bool auto,
                               Lbl.Cajas.Concepto concepto,
                               string textoConcepto,
                               decimal importeDebito,
                               string obs,
                               Lbl.Comprobantes.ComprobanteConArticulos comprob,
                               Lbl.Comprobantes.Recibo recibo,
                               string textoComprob,
                               Dictionary <string, object> extras)
 {
     CtaCteController.AsentarMovimiento(auto, concepto, textoConcepto, importeDebito, obs, comprob, recibo, textoComprob, extras);
 }
예제 #13
0
        public override void ActualizarElemento()
        {
            Lbl.Comprobantes.Recibo Rec = this.Elemento as Lbl.Comprobantes.Recibo;
            if (this.DePago)
            {
                foreach (Lbl.Comprobantes.Pago Pg in Rec.Pagos)
                {
                    if (this.EntradaConceptoTexto.Text.Length > 0)
                    {
                        Pg.ConceptoTexto = this.EntradaConceptoTexto.Text;
                    }
                    else
                    {
                        Pg.ConceptoTexto = "Pago s/" + Rec.ToString();
                    }
                }
            }
            else
            {
                foreach (Lbl.Comprobantes.Cobro Cb in Rec.Cobros)
                {
                    if (this.EntradaConceptoTexto.Text.Length > 0)
                    {
                        Cb.ConceptoTexto = this.EntradaConceptoTexto.Text;
                    }
                    else
                    {
                        Cb.ConceptoTexto = "Cobro s/" + Rec.ToString();
                    }
                }
            }

            Rec.PV            = Lfx.Types.Parsing.ParseInt(EntradaPV.Text);
            Rec.Numero        = Lfx.Types.Parsing.ParseInt(EntradaNumero.Text);
            Rec.Cliente       = new Lbl.Personas.Persona(Rec.Connection, EntradaCliente.ValueInt);
            Rec.Vendedor      = new Lbl.Personas.Persona(Rec.Connection, EntradaVendedor.ValueInt);
            Rec.ConceptoTexto = EntradaConceptoTexto.Text;
            if (EntradaConcepto.ValueInt > 0)
            {
                Rec.Concepto = new Lbl.Cajas.Concepto(Rec.Connection, EntradaConcepto.ValueInt);
            }
            else
            {
                Rec.Concepto = null;
            }
            Rec.Obs = null;

            base.ActualizarElemento();
        }
예제 #14
0
        public override Lfx.Types.OperationResult ValidarControl()
        {
            Lfx.Types.OperationResult validarReturn = new Lfx.Types.SuccessOperationResult();
            Lbl.Comprobantes.Recibo   Rec           = this.Elemento as Lbl.Comprobantes.Recibo;

            if (EntradaCliente.ValueInt <= 0 || EntradaCliente.ValueInt == 999)
            {
                validarReturn.Success = false;
                validarReturn.Message = "Por favor seleccione un cliente válido." + Environment.NewLine;
            }

            if (EntradaConcepto.ValueInt <= 0)
            {
                validarReturn.Success = false;
                validarReturn.Message = "Por favor seleccione un concepto para el movimiento." + Environment.NewLine;
            }

            if (this.DePago)
            {
                // Recibo de pago
                if (Rec.Pagos.ImporteTotal <= 0)
                {
                    validarReturn.Success = false;
                    validarReturn.Message = "Debe especificar los valores de pago." + Environment.NewLine;
                }
            }
            else
            {
                // Recibo de cobro
                if (Rec.Cobros.ImporteTotal <= 0)
                {
                    validarReturn.Success = false;
                    validarReturn.Message = "Debe especificar los valores de cobro." + Environment.NewLine;
                }
            }

            if (this.Elemento.Existe == false && EntradaNumero.Text.ParseInt() != 0)
            {
                int bExiste = this.Connection.FieldInt("SELECT COUNT(id_recibo) FROM recibos WHERE estado<90 AND pv=" + EntradaPV.ValueInt.ToString() + " AND numero=" + EntradaNumero.ValueInt.ToString());
                if (bExiste != 0)
                {
                    validarReturn.Success = false;
                    validarReturn.Message = "Ya existe un Recibo con ese número." + Environment.NewLine;
                }
            }
            return(validarReturn);
        }
예제 #15
0
        private void BotonValoresQuitar_Click(object sender, System.EventArgs e)
        {
            if (ListaValores.SelectedItems.Count == 0 && ListaValores.Items.Count > 0)
            {
                ListaValores.Items[ListaValores.Items.Count - 1].Selected = true;
            }

            if (ListaValores.SelectedItems.Count == 0)
            {
                Lui.Forms.MessageBox.Show("Debe seleccionar un valor para quitar.", "Error");
            }
            else
            {
                Lbl.Comprobantes.Recibo Rec = this.Elemento as Lbl.Comprobantes.Recibo;
                ListViewItem            itm = ListaValores.SelectedItems[0];
                if (this.DePago)
                {
                    for (int i = 0; i < Rec.Pagos.Count; i++)
                    {
                        if (Rec.Pagos[i].GetHashCode().ToString() == itm.Text)
                        {
                            Rec.Pagos.RemoveAt(i);
                            break;
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < Rec.Cobros.Count; i++)
                    {
                        if (Rec.Cobros[i].GetHashCode().ToString() == itm.Text)
                        {
                            Rec.Cobros.RemoveAt(i);
                            break;
                        }
                    }
                }
                this.MostrarValores();

                if (ListaValores.Items.Count == 1)
                {
                    ListaValores.Items[0].Selected = true;
                }
            }
        }
예제 #16
0
        public override Lfx.Types.OperationResult Ok()
        {
            if (Lui.LogOn.LogOnData.ValidateAccess(typeof(Lbl.Comprobantes.Recibo), Lbl.Sys.Permisos.Operaciones.Eliminar) == false)
            {
                return(new Lfx.Types.NoAccessOperationResult());
            }

            Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("Una vez anulado, el comprobante deberá ser archivado en todas sus copias y no podrá ser rehabilitado ni reutilizado.", "¿Está seguro de que desea anular el comprobante?");
            Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;

            if (Pregunta.ShowDialog() == DialogResult.OK)
            {
                int Numero = Lfx.Types.Parsing.ParseInt(EntradaNumero.Text);
                int PV     = Lfx.Types.Parsing.ParseInt(EntradaPV.Text);
                Lbl.Comprobantes.Recibo Rec = null;

                int IdRecibo = 0;
                if (Numero > 0)
                {
                    IdRecibo = this.Connection.FieldInt("SELECT id_recibo FROM recibos WHERE tipo_fac='" + EntradaTipo.TextKey + "' AND pv=" + PV.ToString() + " AND numero=" + Numero.ToString());
                }
                if (IdRecibo != 0)
                {
                    Rec = new Lbl.Comprobantes.Recibo(this.Connection, IdRecibo);
                }

                if (Rec != null && Rec.Existe)
                {
                    IDbTransaction Trans = Rec.Connection.BeginTransaction(IsolationLevel.Serializable);
                    Rec.Anular();
                    Trans.Commit();
                }

                EntradaNumero.Text = "";
                EntradaNumero.Focus();

                return(new Lfx.Types.SuccessOperationResult());
            }
            else
            {
                return(new Lfx.Types.CancelOperationResult());
            }
        }
예제 #17
0
        public void Cargar(int idRecibo)
        {
            Lbl.Comprobantes.Recibo Rec = null;

            if (idRecibo != 0)
            {
                Rec = new Lbl.Comprobantes.Recibo(this.Connection, idRecibo);
            }

            if (Rec != null && Rec.Existe)
            {
                EntradaFecha.Text = Lfx.Types.Formatting.FormatDate(Rec.Fecha);

                EntradaImporte.Text = Lfx.Types.Formatting.FormatCurrency(Rec.Total, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);
                EntradaCliente.Text = Rec.Cliente.ToString();

                EntradaPV.Text      = Rec.PV.ToString();
                EntradaNumero.Text  = Rec.Numero.ToString();
                EntradaTipo.TextKey = Rec.Tipo.Nomenclatura;

                if (Rec.Anulado)
                {
                    EtiquetaAviso.Text = "El comprobante ya fue anulado y no puede anularse nuevamente.";
                    OkButton.Visible   = false;
                }
                else
                {
                    EtiquetaAviso.Text = "Recuerde que necesitar archivar todas las copias del comprobante anulado.";
                    OkButton.Visible   = true;
                }
            }
            else
            {
                EtiquetaAviso.Text  = "";
                EntradaFecha.Text   = "";
                EntradaImporte.Text = "";
                EntradaCliente.Text = "";
                OkButton.Visible    = false;
            }
        }
예제 #18
0
        public override void ActualizarControl()
        {
            Lbl.Comprobantes.Recibo Rec = this.Elemento as Lbl.Comprobantes.Recibo;

            EntradaPV.Text            = Rec.PV.ToString();
            EntradaNumero.Text        = Rec.Numero.ToString();
            EntradaVendedor.Elemento  = Rec.Vendedor;
            EntradaCliente.Elemento   = Rec.Cliente;
            EntradaConcepto.Elemento  = Rec.Concepto;
            EntradaConceptoTexto.Text = Rec.ConceptoTexto;

            if (Rec.DePago)
            {
                BotonAgregarValor.Subtext = "F6";
                BotonQuitarValor.Subtext  = "F7";
            }
            else
            {
                BotonAgregarValor.Subtext = "F4";
                BotonQuitarValor.Subtext  = "F5";
            }

            this.MostrarFacturas();
            this.MostrarValores();

            if (Rec.Existe)
            {
                this.Text = Rec.ToString();
                this.TemporaryReadOnly = true;
            }
            else
            {
                this.Text = Rec.Tipo.Nombre;
            }

            base.ActualizarControl();
        }
예제 #19
0
        internal Lfx.Types.OperationResult AgregarFactura(Lbl.Comprobantes.ComprobanteFacturable factura)
        {
            Lbl.Comprobantes.Recibo Rec = this.Elemento as Lbl.Comprobantes.Recibo;
            if (Rec.Facturas == null)
            {
                Rec.Facturas = new Lbl.Comprobantes.ColeccionComprobanteImporte();
            }
            else
            {
                foreach (Lbl.Comprobantes.ComprobanteImporte CompImp in Rec.Facturas)
                {
                    Lbl.Comprobantes.ComprobanteConArticulos Fc = CompImp.Comprobante;
                    if (Fc.Id == factura.Id)
                    {
                        return(new Lfx.Types.FailureOperationResult("La factura seleccionada ya está en la lista."));
                    }
                }
            }
            Rec.Facturas.AddWithValue(factura, factura.ImporteImpago);

            this.MostrarFacturas();

            return(new Lfx.Types.SuccessOperationResult());
        }
예제 #20
0
        /// <summary>
        /// Asienta un movimiento en la cuenta corriente, y cancela comprobantes asociados.
        /// </summary>
        /// <param name="auto">Indica si es un movimiento automático (generado por el sistema) o manual (generado por el usuario).</param>
        /// <param name="concepto">El concepto bajo el cual se realiza el movimiento.</param>
        /// <param name="textoConcepto">El texto que describe al concepto.</param>
        /// <param name="importeDebito">El importe a debitar de la cuenta. Un importe negativo indica un crédito.</param>
        /// <param name="obs">Observaciones.</param>
        /// <param name="comprob">El comprobante asociado a este movimiento.</param>
        /// <param name="recibo">El recibo asociado a este movimiento.</param>
        /// <param name="textoComprob">Un texto sobre los comprobantes asociados al sistema.</param>
        /// <param name="extras">Colección de campos adicionales para el registro.</param>
        public void Movimiento(bool auto,
                               Lbl.Cajas.Concepto concepto,
                               string textoConcepto,
                               decimal importeDebito,
                               string obs,
                               Lbl.Comprobantes.ComprobanteConArticulos comprob,
                               Lbl.Comprobantes.Recibo recibo,
                               string textoComprob,
                               Dictionary <string, object> extras)
        {
            decimal SaldoActual = this.ObtenerSaldo(true);
            decimal NuevoSaldo  = SaldoActual + importeDebito;

            qGen.Insert ComandoInsertarMovimiento = new qGen.Insert(this.Connection, this.TablaDatos);

            ComandoInsertarMovimiento.Fields.AddWithValue("auto", auto ? (int)1 : (int)0);
            if (concepto == null)
            {
                ComandoInsertarMovimiento.Fields.AddWithValue("id_concepto", null);
            }
            else
            {
                ComandoInsertarMovimiento.Fields.AddWithValue("id_concepto", concepto.Id);
            }
            ComandoInsertarMovimiento.Fields.AddWithValue("concepto", textoConcepto);
            ComandoInsertarMovimiento.Fields.AddWithValue("id_cliente", this.Persona.Id);
            ComandoInsertarMovimiento.Fields.AddWithValue("fecha", qGen.SqlFunctions.Now);
            ComandoInsertarMovimiento.Fields.AddWithValue("importe", importeDebito);
            if (comprob == null)
            {
                ComandoInsertarMovimiento.Fields.AddWithValue("id_comprob", null);
            }
            else
            {
                ComandoInsertarMovimiento.Fields.AddWithValue("id_comprob", comprob.Id);
            }
            if (recibo == null)
            {
                ComandoInsertarMovimiento.Fields.AddWithValue("id_recibo", null);
            }
            else
            {
                ComandoInsertarMovimiento.Fields.AddWithValue("id_recibo", recibo.Id);
            }
            ComandoInsertarMovimiento.Fields.AddWithValue("comprob", textoComprob);
            ComandoInsertarMovimiento.Fields.AddWithValue("saldo", NuevoSaldo);
            ComandoInsertarMovimiento.Fields.AddWithValue("obs", obs);

            if (extras != null && extras.Count > 0)
            {
                foreach (KeyValuePair <string, object> extra in extras)
                {
                    ComandoInsertarMovimiento.Fields.AddWithValue(extra.Key, extra.Value);
                }
            }
            this.Connection.Execute(ComandoInsertarMovimiento);

            qGen.Update ComandoActualizarCliente = new qGen.Update("personas");
            ComandoActualizarCliente.Fields.AddWithValue("saldo_ctacte", NuevoSaldo);
            ComandoActualizarCliente.WhereClause = new qGen.Where("id_persona", this.Persona.Id);
            this.Connection.Execute(ComandoActualizarCliente);
        }
예제 #21
0
        public int Movimiento(bool auto, Lbl.Cajas.Concepto concepto, string textoConcepto,
                              Lbl.Personas.Persona cliente, decimal importe, string obs,
                              Lbl.Comprobantes.ComprobanteConArticulos factura, Lbl.Comprobantes.Recibo recibo, string comprobantes, bool cierre = false)
        {
            if (Lbl.Sys.Config.Actual.UsuarioConectado.TienePermiso(this, Lbl.Sys.Permisos.Operaciones.Mover) == false)
            {
                throw new Lfx.Types.Exceptions.AccessDeniedException("No tiene permiso para hacer movimientos en la caja solicitada");
            }

            decimal SaldoActual = this.ObtenerSaldo(true);

            qGen.IStatement InsertarMovimiento = new qGen.Insert("cajas_movim");
            InsertarMovimiento.ColumnValues.AddWithValue("id_caja", this.Id);
            InsertarMovimiento.ColumnValues.AddWithValue("auto", auto ? 1 : 0);
            if (concepto == null)
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_concepto", null);
            }
            else
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_concepto", concepto.Id);
            }
            if (factura != null && factura.ClienteFree != null && factura.ClienteFree.Nombre != "")
            {
                textoConcepto.Replace("de Consumidor Final F", factura.ClienteFree.Nombre);
            }
            InsertarMovimiento.ColumnValues.AddWithValue("concepto", textoConcepto);
            InsertarMovimiento.ColumnValues.AddWithValue("id_persona", Lbl.Sys.Config.Actual.UsuarioConectado.Id);
            if (cliente == null)
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_cliente", null);
            }
            else
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_cliente", cliente.Id);
            }
            InsertarMovimiento.ColumnValues.AddWithValue("fecha", new qGen.SqlExpression("NOW()"));
            InsertarMovimiento.ColumnValues.AddWithValue("importe", importe);
            if (factura == null)
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_comprob", null);
            }
            else
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_comprob", factura.Id);
            }
            if (recibo == null)
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_recibo", null);
            }
            else
            {
                InsertarMovimiento.ColumnValues.AddWithValue("id_recibo", recibo.Id);
            }
            InsertarMovimiento.ColumnValues.AddWithValue("comprob", comprobantes);
            InsertarMovimiento.ColumnValues.AddWithValue("saldo", SaldoActual + importe);
            InsertarMovimiento.ColumnValues.AddWithValue("obs", obs);
            this.Connection.ExecuteNonQuery(InsertarMovimiento);
            int MovID = this.Connection.FieldInt("SELECT Max(id_movim) From cajas_movim");

            //int MovID = this.Connection.FieldInt("SELECT LAST_INSERT_ID();");
            if (cierre)
            {
                string          idVendedor    = Lbl.Sys.Config.Actual.UsuarioConectado.Id.ToString();
                qGen.IStatement UpdateCupones = new qGen.Update("tarjetas_cupones");
                UpdateCupones.WhereClause = new qGen.Where("id_vendedor=" + idVendedor + " AND id_movimiento is NULL");
                UpdateCupones.ColumnValues.AddWithValue("id_movimiento", MovID);
                this.Connection.ExecuteNonQuery(UpdateCupones);

                qGen.IStatement UpdateCtaCte = new qGen.Update("ctacte");
                UpdateCtaCte.WhereClause = new qGen.Where("id_vendedor=" + idVendedor + " AND id_movimiento is NULL");
                UpdateCtaCte.ColumnValues.AddWithValue("id_movimiento", MovID);
                this.Connection.ExecuteNonQuery(UpdateCtaCte);

                qGen.IStatement UpdateCheques = new qGen.Update("bancos_cheques");
                UpdateCheques.WhereClause = new qGen.Where("id_vendedor=" + idVendedor + " AND id_movimiento is NULL");
                UpdateCheques.ColumnValues.AddWithValue("id_movimiento", MovID);
                this.Connection.ExecuteNonQuery(UpdateCheques);
            }

            return(MovID);
        }
예제 #22
0
        private void MostrarValores()
        {
            ListaValores.BeginUpdate();
            ListaValores.Items.Clear();
            Lbl.Comprobantes.Recibo Rec = this.Elemento as Lbl.Comprobantes.Recibo;

            if (this.DePago)
            {
                foreach (Lbl.Comprobantes.Pago Pg in Rec.Pagos)
                {
                    ListViewItem itm = ListaValores.Items.Add(Pg.GetHashCode().ToString());
                    switch (Pg.FormaDePago.Tipo)
                    {
                    case Lbl.Pagos.TiposFormasDePago.Efectivo:
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Pg.FormaDePago.ToString()));
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Lfx.Types.Formatting.FormatCurrency(Pg.Importe, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales)));
                        break;

                    case Lbl.Pagos.TiposFormasDePago.Caja:
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Pg.FormaDePago.ToString()));
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Lfx.Types.Formatting.FormatCurrency(Pg.Importe, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales)));
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, "Débito desde " + Pg.CajaOrigen.ToString()));
                        break;

                    default:
                        itm.SubItems.Add(Pg.FormaDePago.ToString());
                        itm.SubItems.Add(Lfx.Types.Formatting.FormatCurrency(Pg.Importe, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales));
                        itm.SubItems.Add(Pg.ToString());
                        break;
                    }
                }
                EtiquetaValoresImporte.Text = Lfx.Types.Formatting.FormatCurrency(Rec.Pagos.ImporteTotal, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);
            }
            else
            {
                foreach (Lbl.Comprobantes.Cobro Cb in Rec.Cobros)
                {
                    ListViewItem itm = ListaValores.Items.Add(Cb.GetHashCode().ToString());
                    switch (Cb.FormaDePago.Tipo)
                    {
                    case Lbl.Pagos.TiposFormasDePago.Efectivo:
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Cb.FormaDePago.ToString()));
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Lfx.Types.Formatting.FormatCurrency(Cb.Importe, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales)));
                        break;

                    case Lbl.Pagos.TiposFormasDePago.Tarjeta:
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Cb.FormaDePago.ToString()));
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Lfx.Types.Formatting.FormatCurrency(Cb.Importe, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales)));
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, "Cupón Nº " + Cb.Cupon.Numero + " de " + Cb.Cupon.FormaDePago.ToString()));
                        break;

                    case Lbl.Pagos.TiposFormasDePago.Caja:
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Cb.FormaDePago.ToString()));
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Lfx.Types.Formatting.FormatCurrency(Cb.Importe, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales)));
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, "Depósito en " + Cb.CajaDestino.ToString()));
                        break;

                    default:
                        itm.SubItems.Add(Cb.FormaDePago.ToString());
                        itm.SubItems.Add(Lfx.Types.Formatting.FormatCurrency(Cb.Importe, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales));
                        itm.SubItems.Add(Cb.ToString());
                        break;
                    }
                }
                EtiquetaValoresImporte.Text = Lfx.Types.Formatting.FormatCurrency(Rec.Cobros.ImporteTotal, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);
            }

            LabelAgregarValores.Visible = ListaValores.Items.Count == 0 && this.Elemento.Existe == false;
            BotonQuitarValor.Visible    = ListaValores.Items.Count > 0;

            if (ListaValores.Items.Count > 0 && ListaValores.SelectedItems.Count == 0)
            {
                ListaValores.Items[ListaValores.Items.Count - 1].Selected = true;
                ListaValores.Items[ListaValores.Items.Count - 1].Focused  = true;
            }

            ListaValores.EndUpdate();
        }
예제 #23
0
                public override Lfx.Types.OperationResult Ok()
                {
                        if (Lui.LogOn.LogOnData.ValidateAccess(typeof(Lbl.Comprobantes.Recibo), Lbl.Sys.Permisos.Operaciones.Eliminar) == false)
                                return new Lfx.Types.NoAccessOperationResult();

                        Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("Una vez anulado, el comprobante deberá ser archivado en todas sus copias y no podrá ser rehabilitado ni reutilizado.", "¿Está seguro de que desea anular el comprobante?");
                        Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;

                        if (Pregunta.ShowDialog() == DialogResult.OK) {
                                int Numero = Lfx.Types.Parsing.ParseInt(EntradaNumero.Text);
                                int PV = Lfx.Types.Parsing.ParseInt(EntradaPV.Text);
                                Lbl.Comprobantes.Recibo Rec = null;

                                int IdRecibo = 0;
                                if (Numero > 0)
                                        IdRecibo = this.Connection.FieldInt("SELECT id_recibo FROM recibos WHERE tipo_fac='" + EntradaTipo.TextKey + "' AND pv=" + PV.ToString() + " AND numero=" + Numero.ToString());
                                if (IdRecibo != 0)
                                        Rec = new Lbl.Comprobantes.Recibo(this.Connection, IdRecibo);

                                if (Rec != null && Rec.Existe) {
                                        IDbTransaction Trans = Rec.Connection.BeginTransaction(IsolationLevel.Serializable);
                                        Rec.Anular();
                                        Trans.Commit();
                                }

                                EntradaNumero.Text = "";
                                EntradaNumero.Focus();

                                return new Lfx.Types.SuccessOperationResult();
                        } else {
                                return new Lfx.Types.CancelOperationResult();
                        }
                }