public override void OnLoad() { if (this.Registro != null) { if (this.GetFieldValue <int>("id_banco") > 0) { this.Banco = new Bancos.Banco(this.Connection, this.GetFieldValue <int>("id_banco")); } else { this.Banco = null; } if (this.GetFieldValue <int>("id_caja") > 0) { this.Caja = new Cajas.Caja(this.Connection, this.GetFieldValue <int>("id_caja")); } else { this.Caja = null; } if (this.GetFieldValue <int>("id_sucursal") > 0) { this.Sucursal = new Lbl.Entidades.Sucursal(this.Connection, this.GetFieldValue <int>("id_sucursal")); } else { this.Sucursal = null; } } base.OnLoad(); }
private void EntradaOrigenDestino_TextChanged(object sender, System.EventArgs e) { CajaOrigen = EntradaOrigen.Elemento as Lbl.Cajas.Caja; CajaDestino = EntradaDestino.Elemento as Lbl.Cajas.Caja; if (CajaOrigen == null || CajaDestino == null) { return; } MonedaOrigen = CajaOrigen.ObtenerMoneda(); MonedaDestino = CajaDestino.ObtenerMoneda(); if (MonedaOrigen != null && MonedaDestino != null) { EntradaImporte.Prefijo = MonedaOrigen.Simbolo; EntradaImporteDestino.Prefijo = MonedaDestino.Simbolo; if (MonedaDestino.Cotizacion != MonedaOrigen.Cotizacion) { EntradaImporteDestino.ValueDecimal = EntradaImporte.ValueDecimal * MonedaDestino.Cotizacion / MonedaOrigen.Cotizacion; EntradaImporteDestino.Visible = true; EtiquetaImporteDestino.Visible = true; // TODO: EntradaImporteDestino.ShowBalloon("Se realiza una conversión de moneda según la cotización " + System.Convert.ToString(MonedaOrigen["signo"]) + " " + Lfx.Types.Formatting.FormatCurrency(System.Convert.ToDecimal(MonedaOrigen["cotizacion"]), Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales) + " = " + System.Convert.ToString(MonedaDestino["signo"]) + " " + Lfx.Types.Formatting.FormatCurrency(System.Convert.ToDecimal(MonedaDestino["cotizacion"]), Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales)); } else { EntradaImporteDestino.Visible = false; EtiquetaImporteDestino.Visible = false; } } else { EntradaImporteDestino.Visible = false; EtiquetaImporteDestino.Visible = false; } }
public override Lfx.Types.OperationResult Ok() { Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult(); if (EntradaCajaDestino.ValueInt <= 0) { Res.Success = false; Res.Message += "Por favor seleccione la cuenta de destino." + Environment.NewLine; } if (EntradaTotal.ValueDecimal <= 0) { Res.Success = false; Res.Message += "El importe total debe ser mayor o igual a cero." + Environment.NewLine; } if (Res.Success == true) { decimal GestionDeCobro = Lfx.Types.Parsing.ParseCurrency(EntradaGestionDeCobro.Text); decimal Impuestos = Lfx.Types.Parsing.ParseCurrency(EntradaImpuestos.Text); IDbTransaction Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable); Lbl.Cajas.Caja CajaDestino = EntradaCajaDestino.Elemento as Lbl.Cajas.Caja; this.Cheque.Efectivizar(CajaDestino, GestionDeCobro, Impuestos); Trans.Commit(); } return(Res); }
public void Efectivizar(Lbl.Cajas.Caja destino, decimal GestionDeCobro, decimal Impuestos) { Lbl.Cajas.Caja CajaCheques = new Lbl.Cajas.Caja(Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaCheques); CajaCheques.Movimiento(true, Lbl.Cajas.Concepto.AjustesYMovimientos, "Efectivización de cheque(s)", null, -this.Importe, this.ToString(), null, null, null); destino.Movimiento(true, Lbl.Cajas.Concepto.AjustesYMovimientos, "Efectivización de cheque(s)", null, this.Importe - GestionDeCobro - Impuestos, this.ToString(), null, null, null); if (GestionDeCobro != 0) { destino.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 24010), "Gestion de cobro de cheque(s)", null, -GestionDeCobro, this.ToString(), null, null, null); } if (Impuestos != 0) { destino.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 23030), "Impuestos de cheque(s)", null, -Impuestos, this.ToString(), null, null, null); } this.Estado = 10; qGen.Update ActualizarEstado = new qGen.Update(this.TablaDatos); ActualizarEstado.ColumnValues.AddWithValue("estado", this.Estado); ActualizarEstado.WhereClause = new qGen.Where(this.CampoId, this.Id); this.Connection.ExecuteNonQuery(ActualizarEstado); }
public void Anular() { string DescripConcepto = "Anulación"; if (Recibo != null) { DescripConcepto = "Anulación " + Recibo.ToString(); } Personas.Persona Cliente = null; Comprobantes.ComprobanteConArticulos Factura = null; if (Recibo != null) { if (Recibo.Cliente != null) { Cliente = Recibo.Cliente; } if (Recibo.Facturas != null && Recibo.Facturas.Count > 0) { Factura = Recibo.Facturas[0].Comprobante; } } switch (FormaDePago.Tipo) { case Lbl.Pagos.TiposFormasDePago.Efectivo: Lbl.Cajas.Caja Caja = new Lbl.Cajas.Caja(Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria); Caja.Movimiento(true, this.Concepto, DescripConcepto, Cliente, -this.Importe, "", Factura, this.Recibo, ""); break; case Lbl.Pagos.TiposFormasDePago.ChequePropio: if (this.Cheque != null) { this.Cheque.Anular(); } break; case Lbl.Pagos.TiposFormasDePago.Tarjeta: if (this.Cupon != null) { this.Cupon.Anular(); } break; case Lbl.Pagos.TiposFormasDePago.OtroValor: if (this.Valor != null) { this.Valor.Anular(); } break; case Lbl.Pagos.TiposFormasDePago.Caja: this.CajaDestino.Movimiento(true, this.Concepto, DescripConcepto, Cliente, -this.Importe, null, Factura, this.Recibo, null); break; } }
public override Lfx.Types.OperationResult Cargar() { Lfx.Types.OperationResult Res = base.Cargar(); if (Res.Success) { if (Registro["id_caja"] == null) m_Caja = null; else m_Caja = new Lbl.Cajas.Caja(this.Connection, System.Convert.ToInt32(Registro["id_caja"])); } return Res; }
public override void OnFiltersChanged(Lazaro.Pres.Filters.FilterCollection filters) { this.Caja = this.Definicion.Filters["cajas_movim.id_caja"].Value as Lbl.Cajas.Caja; this.Cliente = this.Definicion.Filters["cajas_movim.id_cliente"].Value as Lbl.Personas.Persona; this.Concepto = this.Definicion.Filters["cajas_movim.id_concepto"].Value as Lbl.Cajas.Concepto; TipoConcepto = Lfx.Types.Parsing.ParseInt(this.Definicion.Filters["conceptos.grupo"].Value.ToString()); Direccion = Lfx.Types.Parsing.ParseInt(this.Definicion.Filters["conceptos.es"].Value.ToString()); this.Fechas = this.Definicion.Filters["cajas_movim.fecha"].Value as Lfx.Types.DateRange; BotonArqueo.Visible = !(this.Caja == null || this.Cliente != null || Concepto != null || Direccion != 0 || this.Fechas.To < System.DateTime.Now); base.OnFiltersChanged(filters); }
private void MostrarDatos() { decimal ActivosCajas = 0; decimal PasivosCajas = 0; System.Data.DataTable Cajas = this.Connection.Select("SELECT * FROM cajas WHERE estado>0"); foreach(System.Data.DataRow Rw in Cajas.Rows) { Lbl.Cajas.Caja Cta = new Lbl.Cajas.Caja(this.Connection, (Lfx.Data.Row)Rw); decimal Saldo = Cta.ObtenerSaldo(false); if (Saldo > 0) ActivosCajas += Saldo; else PasivosCajas += Math.Abs(Saldo); } EntradaActivosCajas.Text = Lfx.Types.Formatting.FormatCurrency(ActivosCajas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); EntradaPasivosCajas.Text = Lfx.Types.Formatting.FormatCurrency(PasivosCajas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal ActivosStock = Connection.FieldDecimal("SELECT SUM(costo*stock_actual) FROM articulos WHERE costo>0 AND stock_actual>0"); EntradaActivosStock.Text = Lfx.Types.Formatting.FormatCurrency(ActivosStock, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal Activos = ActivosCajas + ActivosStock; EntradaActivosSubtotal.Text = Lfx.Types.Formatting.FormatCurrency(Activos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal FuturosTarjetas = 0.92m * Connection.FieldDecimal("SELECT SUM(importe) FROM tarjetas_cupones WHERE estado=10 OR (estado=0 AND fecha>DATE_SUB(NOW(), INTERVAL 45 DAY))"); //Tarjetas resta el 8% (estimado) de comisiones decimal Facturas = Connection.FieldDecimal("SELECT SUM(total)-SUM(cancelado) FROM comprob WHERE tipo_fac IN ('FA', 'FB', 'FC', 'FE', 'FM') AND impresa>0 AND numero>0 AND anulada=0 AND fecha >= '" + Lfx.Types.Formatting.FormatDateSql(DateTime.Now.AddYears(-2)) + "'"); EntradaCC.Text = Lfx.Types.Formatting.FormatCurrency(Facturas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal FuturosPedidos = Connection.FieldDecimal("SELECT SUM(total-gastosenvio) FROM comprob WHERE tipo_fac='PD' AND anulada=0 AND compra>0 AND estado=50"); EntradaFuturosTarjetas.Text = Lfx.Types.Formatting.FormatCurrency(FuturosTarjetas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); EntradaFuturosPedidos.Text = Lfx.Types.Formatting.FormatCurrency(FuturosPedidos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal Futuros = FuturosTarjetas + FuturosPedidos + Facturas; EntradaFuturosSubtotal.Text = Lfx.Types.Formatting.FormatCurrency(Futuros, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); EntradaActivosActualesFuturos.Text = Lfx.Types.Formatting.FormatCurrency(Activos + Futuros, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal PasivosCheques = Connection.FieldDecimal("SELECT SUM(importe) FROM bancos_cheques WHERE emitido>0 AND estado=0"); EntradaPasivosCheques.Text = Lfx.Types.Formatting.FormatCurrency(PasivosCheques, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal PasivosStock = Math.Abs(Connection.FieldDecimal("SELECT SUM(costo*stock_actual) FROM articulos WHERE costo>0 AND stock_actual<0")); EntradaPasivosStock.Text = Lfx.Types.Formatting.FormatCurrency(PasivosStock, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal Pasivos = PasivosCajas + PasivosCheques + PasivosStock; EntradaPasivosSubtotal.Text = Lfx.Types.Formatting.FormatCurrency(Pasivos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); EntradaPatrimonioActual.Text = Lfx.Types.Formatting.FormatCurrency(Activos - Pasivos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); EntradaPatrimonioFuturo.Text = Lfx.Types.Formatting.FormatCurrency(Activos + Futuros - Pasivos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); }
public override void ActualizarControl() { Lbl.Cajas.Caja Caja = this.Elemento as Lbl.Cajas.Caja; EntradaTitular.Text = Caja.Titular; EntradaTipo.TextKey = ((int)(Caja.Tipo)).ToString(); EntradaNumero.Text = Caja.Numero; EntradaBanco.Elemento = Caja.Banco; EntradaMoneda.Elemento = Caja.Moneda; EntradaNombre.Text = Caja.Nombre; EntradaClaveBancaria.Text = Caja.ClaveBancaria; EntradaEstado.TextKey = Caja.Estado.ToString(); base.ActualizarControl(); }
public void Pagar(Lbl.Cajas.Caja cajaOrigen) { cajaOrigen.Movimiento(true, this.Concepto, this.Concepto.Nombre, this.Cliente, -this.Importe, "Pago de " + this.ToString(), null, this.ReciboCobro != null ? this.ReciboCobro : this.ReciboPago, null); qGen.Update ActualizarEstado = new qGen.Update(this.TablaDatos); ActualizarEstado.ColumnValues.AddWithValue("estado", 10); ActualizarEstado.WhereClause = new qGen.Where(this.CampoId, this.Id); this.Connection.ExecuteNonQuery(ActualizarEstado); }
public override void ActualizarElemento() { Lbl.Cajas.Caja Caja = this.Elemento as Lbl.Cajas.Caja; Caja.Nombre = EntradaNombre.Text; Caja.Numero = EntradaNumero.Text; Caja.Titular = EntradaTitular.Text; Caja.Banco = EntradaBanco.Elemento as Lbl.Bancos.Banco; Caja.Moneda = EntradaMoneda.Elemento as Lbl.Entidades.Moneda; Caja.Tipo = (Lbl.Cajas.TiposDeCaja)(Lfx.Types.Parsing.ParseInt(EntradaTipo.TextKey)); Caja.ClaveBancaria = EntradaClaveBancaria.Text; Caja.Estado = Lfx.Types.Parsing.ParseInt(EntradaEstado.TextKey); base.ActualizarElemento(); }
public override Lfx.Types.OperationResult Ok() { Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult(); if (EntradaCajaOrigen.ValueInt <= 0) { Res.Success = false; Res.Message += "Por favor seleccione la cuenta de origen." + Environment.NewLine; } if (EntradaTotal.ValueDecimal <= 0) { Res.Success = false; Res.Message += "El importe total debe ser mayor o igual a cero." + Environment.NewLine; } if (Res.Success == true) { decimal Impuestos = EntradaImpuestos.ValueDecimal; IDbTransaction Trans = null; if (this.Connection.InTransaction == false) { Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable); } string ChequesNum = null; System.Data.DataTable TablaCheques = Connection.Select("SELECT * FROM bancos_cheques WHERE id_cheque IN (" + ChequesIds + ")"); Lbl.Cajas.Caja CajaOrigen = new Lbl.Cajas.Caja(Connection, EntradaCajaOrigen.ValueInt); foreach (System.Data.DataRow RowCheque in TablaCheques.Rows) { Lbl.Bancos.Cheque Cheque = new Lbl.Bancos.Cheque(this.Connection, (Lfx.Data.Row)RowCheque); Cheque.Pagar(CajaOrigen); } if (Impuestos != 0) { CajaOrigen.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 23030), "Impuestos de cheque(s)", null, -Impuestos, "Cheques Nº " + ChequesNum, null, null, null); } if (Trans != null) { Trans.Commit(); } } return(Res); }
public override Lfx.Types.OperationResult Cargar() { Lfx.Types.OperationResult Res = base.Cargar(); if (Res.Success) { if (Registro["id_caja"] == null) { m_Caja = null; } else { m_Caja = new Lbl.Cajas.Caja(this.Connection, System.Convert.ToInt32(Registro["id_caja"])); } } return(Res); }
public void ProbarFacturaBSinIvaEnEfectivo() { var Fac = new Lbl.Comprobantes.Factura(TestSetup.Connection); Fac.Crear(); Fac.Vendedor = Administrador; Fac.Cliente = SocioConsFinalFueguino; Fac.FormaDePago = Efectivo; Fac.Tipo = TipoB; var Det = Test.Entity.Comprobantes.DetalleArticuloTest.ObtenerDetalleEjemplo(false, Fac.Cliente.ObtenerSituacionIva() != Impuestos.SituacionIva.Exento); Fac.Articulos.Add(Det); Fac.Descuento = 5; Assert.AreEqual(437m, Fac.Total, "Total debe ser 437"); Fac.Guardar(); var Ctrl = new Lazaro.Base.Controller.ComprobanteController(); Ctrl.Imprimir(Fac, this.ObtenerImpresoraNula()); // Verificar importes de la factura var FacGuardada = new Lbl.Comprobantes.Factura(TestSetup.Connection, Fac.Id); Assert.AreEqual(5m, FacGuardada.Descuento, "Descuento debe ser 5"); Assert.AreEqual(437m, FacGuardada.Total, "Total debe ser 437"); Assert.AreEqual(23m, FacGuardada.ImporteDescuentos, "ImporteDescuentos debe ser 23"); Assert.AreEqual(437m, FacGuardada.ImporteCancelado, "ImporteCancelado debe ser 437"); Assert.AreEqual(0m, FacGuardada.ImporteIvaDiscriminado, "ImporteIvaDiscriminado debe ser 0"); Assert.AreEqual(0m, FacGuardada.ImporteIvaDiscriminadoFinal, "ImporteIvaDiscriminadoFinal debe ser 0"); Assert.AreEqual(0m, FacGuardada.ImporteIva, "ImporteIva debe ser 0"); Assert.AreEqual(0m, FacGuardada.ImporteIvaFinal, "ImporteIvaFinal debe ser 0"); var CajaEfectivo = new Lbl.Cajas.Caja(TestSetup.Connection, 999); var UltMovim = CajaEfectivo.ObtenerUltimoMovimiento(); Assert.AreEqual(437m, UltMovim.Importe, "El último movimiento en efectivo debe ser 437"); }
public override Lfx.Types.OperationResult Guardar() { qGen.IStatement Comando; if (this.Existe) { Comando = new qGen.Update(this.TablaDatos); Comando.WhereClause = new qGen.Where(this.CampoId, this.Id); } else { Comando = new qGen.Insert(this.TablaDatos); } Comando.ColumnValues.AddWithValue("fecha", new qGen.SqlExpression("NOW()")); if (this.Concepto == null) { Comando.ColumnValues.AddWithValue("id_concepto", null); } else { Comando.ColumnValues.AddWithValue("id_concepto", this.Concepto.Id); } if (this.ConceptoTexto == null || this.ConceptoTexto.Length == 0) { if (this.Concepto == null) { Comando.ColumnValues.AddWithValue("concepto", ""); } else { Comando.ColumnValues.AddWithValue("concepto", this.Concepto.Nombre); } } else { Comando.ColumnValues.AddWithValue("concepto", this.ConceptoTexto); } if (this.Banco == null) { Comando.ColumnValues.AddWithValue("id_banco", null); } else { Comando.ColumnValues.AddWithValue("id_banco", this.Banco.Id); } if (this.Chequera == null) { Comando.ColumnValues.AddWithValue("id_chequera", null); } else { Comando.ColumnValues.AddWithValue("id_chequera", this.Chequera.Id); } Comando.ColumnValues.AddWithValue("numero", this.Numero); Comando.ColumnValues.AddWithValue("id_sucursal", Lfx.Workspace.Master.CurrentConfig.Empresa.SucursalActual); if (this.ReciboCobro == null) { Comando.ColumnValues.AddWithValue("id_recibo", null); } else { Comando.ColumnValues.AddWithValue("id_recibo", this.ReciboCobro.Id); } if (this.ReciboPago == null) { Comando.ColumnValues.AddWithValue("id_recibo_pago", null); } else { Comando.ColumnValues.AddWithValue("id_recibo_pago", this.ReciboPago.Id); } if (this.Cliente == null && this.ReciboCobro != null) { this.Cliente = this.ReciboCobro.Cliente; } if (this.Cliente == null && this.ReciboPago != null) { this.Cliente = this.ReciboPago.Cliente; } if (this.Cliente == null) { Comando.ColumnValues.AddWithValue("id_cliente", null); } else { Comando.ColumnValues.AddWithValue("id_cliente", this.Cliente.Id); } if (this.Factura == null) { Comando.ColumnValues.AddWithValue("id_comprob", null); } else { Comando.ColumnValues.AddWithValue("id_comprob", this.Factura.Id); } if (this.Emitido) { Comando.ColumnValues.AddWithValue("nombre", "Nº " + this.Numero + " por " + Lbl.Sys.Config.Moneda.Simbolo + " " + Lfx.Types.Formatting.FormatCurrency(this.Importe, 2)); } else { Comando.ColumnValues.AddWithValue("nombre", "Nº " + this.Numero + " por " + Lbl.Sys.Config.Moneda.Simbolo + " " + Lfx.Types.Formatting.FormatCurrency(this.Importe, 2) + " emitido por " + this.Emisor); } Comando.ColumnValues.AddWithValue("importe", this.Importe); Comando.ColumnValues.AddWithValue("fechaemision", this.FechaEmision); Comando.ColumnValues.AddWithValue("emitidopor", this.Emisor); Comando.ColumnValues.AddWithValue("emitido", this.Emitido ? 1 : 0); Comando.ColumnValues.AddWithValue("estado", this.Estado); Comando.ColumnValues.AddWithValue("fechacobro", this.FechaCobro); Comando.ColumnValues.AddWithValue("obs", this.Obs); this.AgregarTags(Comando); this.Connection.ExecuteNonQuery(Comando); if (this.Chequera != null) { qGen.Update ActualizarChequeras = new qGen.Update("chequeras"); ActualizarChequeras.ColumnValues.AddWithValue("cheques_emitidos", new qGen.SqlExpression("cheques_emitidos+1")); ActualizarChequeras.WhereClause = new qGen.Where("id_chequera", this.Chequera.Id); this.Connection.ExecuteNonQuery(ActualizarChequeras); } if (this.Existe == false && this.Emitido == false) { //Asiento en la cuenta cheques, sólo para cheques de cobro Cajas.Caja CajaCheques = new Lbl.Cajas.Caja(this.Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaCheques); Lbl.Personas.Persona UsarCliente = this.Cliente; if (UsarCliente == null && this.Factura != null) { UsarCliente = this.Factura.Cliente; } if (UsarCliente == null && this.ReciboCobro != null) { UsarCliente = this.ReciboCobro.Cliente; } if (UsarCliente == null && this.ReciboPago != null) { UsarCliente = this.ReciboPago.Cliente; } CajaCheques.Movimiento(true, this.Concepto, this.ConceptoTexto, UsarCliente, this.ReciboPago != null ? -this.Importe : this.Importe, this.ToString(), this.Factura, this.ReciboCobro != null ? this.ReciboCobro : this.ReciboPago, null); } return(base.Guardar()); }
private void BotonAcreditar_Click(object sender, System.EventArgs e) { if (Listado.CheckedItems.Count == 0) { Lui.Forms.MessageBox.Show("Debe marcar uno o más cupones para acreditar.", "Acreditar"); return; } using (Lfc.Tarjetas.Cupones.Acreditar FormularioAcreditacion = new Lfc.Tarjetas.Cupones.Acreditar()) { Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Acreditando cupones", "Se están marcando los cupones seleccionados como 'Acreditado'."); Progreso.Modal = false; decimal Total = 0; decimal TotalAcreditar = 0; int iCantidad = 0; System.Text.StringBuilder Cupones = new System.Text.StringBuilder(); decimal ComisionTarjeta = 0; decimal ComisionPlan = 0; decimal GestionDeCobro = 0; Progreso.Max = Listado.Items.Count + 2; Progreso.Begin(); Progreso.ChangeStatus("Analizando"); Lbl.Pagos.FormaDePago Tarjeta = null; foreach (System.Windows.Forms.ListViewItem itm in Listado.Items) { if (itm.Checked) { iCantidad++; Lbl.Pagos.Cupon Cupon = new Lbl.Pagos.Cupon(Connection, Lfx.Types.Parsing.ParseInt(itm.Text)); Total += Cupon.Importe; if (Cupones.Length > 0) { Cupones.Append("," + Cupon.Numero); } else { Cupones.Append(Cupon.Numero); } if (Cupon.FormaDePago != null) { if (Tarjeta == null) { Tarjeta = Cupon.FormaDePago; } else if (Tarjeta.Id != Cupon.FormaDePago.Id) { //Mezcla de tarjetas Progreso.End(); Lui.Forms.MessageBox.Show("No todos los cupones seleccionados pertenecen a la misma forma de pago.", "Error"); return; } ComisionTarjeta += Cupon.Importe * (Tarjeta.Retencion / 100); if (Cupon.Plan != null) { ComisionPlan += Cupon.Importe * (Cupon.Plan.Comision / 100); } } } Progreso.ChangeStatus(itm.Index); } FormularioAcreditacion.IgnorarCambios = true; FormularioAcreditacion.EntradaCuponesCantidad.Text = iCantidad.ToString(); FormularioAcreditacion.EntradaCuponesSubTotal.Text = Lfx.Types.Formatting.FormatCurrency(Total, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); FormularioAcreditacion.EntradaComisionTarjeta.Text = Lfx.Types.Formatting.FormatCurrency(ComisionTarjeta, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); FormularioAcreditacion.EntradaComisionPlan.Text = Lfx.Types.Formatting.FormatCurrency(ComisionPlan, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); FormularioAcreditacion.EntradaComisionUsuario.Text = "0"; FormularioAcreditacion.EntradaTotal.Text = Lfx.Types.Formatting.FormatCurrency(Total - ComisionTarjeta - ComisionPlan, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); FormularioAcreditacion.IgnorarCambios = false; bool Aceptar = false; Lfc.Comprobantes.Recibos.EditarCobro FormularioPago = new Lfc.Comprobantes.Recibos.EditarCobro(); do { if (FormularioAcreditacion.ShowDialog() == DialogResult.OK) { TotalAcreditar = Lfx.Types.Parsing.ParseCurrency(FormularioAcreditacion.EntradaTotal.Text); GestionDeCobro = Total - TotalAcreditar; FormularioPago.Cobro.FromCobro(new Lbl.Comprobantes.Cobro(this.Connection, ((Lbl.Pagos.TiposFormasDePago)(Lfx.Types.Parsing.ParseInt(FormularioAcreditacion.EntradaFormaPago.TextKey))))); FormularioPago.Cobro.FormaDePagoEditable = false; FormularioPago.Cobro.Importe = TotalAcreditar; FormularioPago.Cobro.ImporteEditable = false; if (Tarjeta != null && Tarjeta.Caja != null) { FormularioPago.Cobro.EntradaCaja.ValueInt = Tarjeta.Caja.Id; } FormularioPago.Cobro.Obs = "Cupones Nº " + Cupones.ToString(); FormularioPago.Cobro.ObsEditable = false; if (FormularioPago.ShowDialog() == DialogResult.OK) { Aceptar = true; break; } } else { Aceptar = false; break; } }while (true); if (Aceptar) { IDbTransaction Trans = Connection.BeginTransaction(IsolationLevel.Serializable); Progreso.ChangeStatus("Asentando el movimiento"); Progreso.Max = Listado.Items.Count + 2; Progreso.Begin(); // Marcar los cupones como acreditados foreach (System.Windows.Forms.ListViewItem itm in Listado.Items) { if (itm.Checked) { Lbl.Pagos.Cupon Cupon = new Lbl.Pagos.Cupon(this.Connection, Lfx.Types.Parsing.ParseInt(itm.Text)); if (Cupon.Estado == 0 || Cupon.Estado == 10) { Cupon.Acreditar(); } } Progreso.ChangeStatus(itm.Index); } Progreso.ChangeStatus("Acreditando el importe"); // Acreditar el dinero Lbl.Comprobantes.Cobro MiCobro = FormularioPago.Cobro.ToCobro(Connection); switch (FormularioPago.Cobro.FormaDePago.Tipo) { case Lbl.Pagos.TiposFormasDePago.Efectivo: Lbl.Cajas.Caja CajaDiaria = new Lbl.Cajas.Caja(Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria); CajaDiaria.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Acreditación de Cupones", null, Total, "Cupones Nº " + Cupones.ToString(), null, null, null); CajaDiaria.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 24010), "Gestión de Cobro de Cupones", null, -GestionDeCobro, "Cupones Nº " + Cupones.ToString(), null, null, null); break; case Lbl.Pagos.TiposFormasDePago.ChequePropio: Lbl.Bancos.Cheque Cheque = MiCobro.Cheque; Cheque.Concepto = Lbl.Cajas.Concepto.IngresosPorFacturacion; Cheque.ConceptoTexto = "Acreditación Tarjetas"; Cheque.Guardar(); break; case Lbl.Pagos.TiposFormasDePago.Caja: MiCobro.CajaDestino.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Acreditación de Cupones", null, Total, "Cupones Nº " + Cupones.ToString(), null, null, null); MiCobro.CajaDestino.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 24010), "Gestión de Cobro de Cupones", null, -GestionDeCobro, "Cupones Nº " + Cupones.ToString(), null, null, null); break; } Trans.Commit(); Progreso.End(); } } this.RefreshList(); }
public CajaController(Lazaro.Orm.IEntityManager em, Lbl.Cajas.Caja caja) { this.Em = em; this.Connection = em.Connection; this.Caja = caja; }
public override void Crear() { base.Crear(); m_Caja = null; }
public override void OnLoad() { if (this.Registro != null) { if (this.GetFieldValue<int>("id_banco") > 0) this.Banco = new Bancos.Banco(this.Connection, this.GetFieldValue<int>("id_banco")); else this.Banco = null; if (this.GetFieldValue<int>("id_caja") > 0) this.Caja = new Cajas.Caja(this.Connection, this.GetFieldValue<int>("id_caja")); else this.Caja = null; if (this.GetFieldValue<int>("id_sucursal") > 0) this.Sucursal = new Lbl.Entidades.Sucursal(this.Connection, this.GetFieldValue<int>("id_sucursal")); else this.Sucursal = null; } base.OnLoad(); }
public void Efectivizar(Lbl.Cajas.Caja destino, decimal GestionDeCobro, decimal Impuestos) { Lbl.Cajas.Caja CajaCheques = new Lbl.Cajas.Caja(Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaCheques); CajaCheques.Movimiento(true, Lbl.Cajas.Concepto.AjustesYMovimientos, "Efectivización de cheque(s)", null, -this.Importe, this.ToString(), null, null, null); destino.Movimiento(true, Lbl.Cajas.Concepto.AjustesYMovimientos, "Efectivización de cheque(s)", null, this.Importe - GestionDeCobro - Impuestos, this.ToString(), null, null, null); if (GestionDeCobro != 0) destino.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 24010), "Gestion de cobro de cheque(s)", null, -GestionDeCobro, this.ToString(), null, null, null); if (Impuestos != 0) destino.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 23030), "Impuestos de cheque(s)", null, -Impuestos, this.ToString(), null, null, null); this.Estado = 10; qGen.Update ActualizarEstado = new qGen.Update(this.TablaDatos); ActualizarEstado.Fields.AddWithValue("estado", this.Estado); ActualizarEstado.WhereClause = new qGen.Where(this.CampoId, this.Id); this.Connection.Execute(ActualizarEstado); }
public void AsentarPago(bool anulacion) { if (this.FormaDePago == null) return; decimal ImporteMovim; if(anulacion) // Al cancelar, desasiento el importe pagado ImporteMovim = this.ImporteCancelado; else // Al ingresar la factura, asiento el importe impago (que normalmente es el total) ImporteMovim = this.Total; if (this.FormaDePago.Tipo == Pagos.TiposFormasDePago.CuentaCorriente) // Si es cuenta corriente muevo siempre el total (incluso al anular) ImporteMovim = this.Total; if (this.Tipo.DireccionCtaCte < 0) // Este tipo de comprobantes hace créditos en cuenta corriente ImporteMovim = -ImporteMovim; if (this.Compra) { // Es comprobante de compra, invierto la dirección del movimiento ImporteMovim = -ImporteMovim; } if (anulacion == false) { // Asiento el pago (sólo efectivo y cta. cte.) // El resto de los pagos los maneja el formulario desde donde se mandó a imprimir switch (this.FormaDePago.Tipo) { case Lbl.Pagos.TiposFormasDePago.Efectivo: if (this.ImporteImpago > 0) { Lbl.Cajas.Caja CajaDiaria = new Lbl.Cajas.Caja(this.Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria); CajaDiaria.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, this.ToString(), this.Cliente, ImporteMovim, null, this, null, null); this.CancelarImporte(this.ImporteImpago, null); } break; case Lbl.Pagos.TiposFormasDePago.CuentaCorriente: this.Cliente.CuentaCorriente.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, this.ToString(), ImporteMovim, null, this, null, null); if (this.Tipo.EsNotaCredito) { if (this.ComprobRelacionados == null || this.ComprobRelacionados.Count == 0) { // Si no hay comprobantes asociados, pero esta nota de crédito viene de un comprobante anteior // asocio el comprobante original a esta nota de crédito if (this.ComprobanteOriginal != null && this.ComprobanteOriginal.Tipo.EsFacturaOTicket) { this.ComprobRelacionados = new ColeccionComprobanteImporte(); this.ComprobRelacionados.AddWithValue(this.ComprobanteOriginal, 0); } } Lbl.Comprobantes.Recibo.CancelarImpagos(this.Cliente, this.ComprobRelacionados, this, this.Compra ? -this.Total : this.Total); } decimal FacturaSaldo = this.ImporteImpago; if (FacturaSaldo > 0) { decimal SaldoCtaCteAntes = -(ImporteMovim - this.Cliente.CuentaCorriente.ObtenerSaldo(true)); // Busca un saldo en cta cte para cancelar este comprobante if ((ImporteMovim > 0 && SaldoCtaCteAntes < 0) || (ImporteMovim < 0 && SaldoCtaCteAntes > 0)) { decimal SaldoACancelar = ImporteMovim < 0 ? SaldoCtaCteAntes : -SaldoCtaCteAntes; if (SaldoACancelar > FacturaSaldo) SaldoACancelar = FacturaSaldo; // Cancelo la factura con un saldo a favor que tenía en cta. cte. qGen.Update ActualizarComprob = new qGen.Update("comprob"); ActualizarComprob.Fields.AddWithValue("cancelado", new qGen.SqlExpression("cancelado+" + Lfx.Types.Formatting.FormatCurrencySql(SaldoACancelar))); ActualizarComprob.WhereClause = new qGen.Where("id_comprob", this.Id); this.Connection.Execute(ActualizarComprob); } } break; } } else { // Es una anulación, invierto la dirección del movimiento ImporteMovim = -ImporteMovim; switch (this.FormaDePago.Tipo) { case Lbl.Pagos.TiposFormasDePago.Efectivo: // Hago un movimiento en caja diaria Lbl.Cajas.Caja Caja = new Lbl.Cajas.Caja(Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria); Caja.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Anulación " + this.ToString(), this.Cliente, ImporteMovim, null, this, null, null); break; case Lbl.Pagos.TiposFormasDePago.ChequePropio: case Pagos.TiposFormasDePago.ChequeTerceros: Lbl.Bancos.Cheque Cheque = new Lbl.Bancos.Cheque(Connection, this); if (Cheque != null && Cheque.Existe) Cheque.Anular(); break; case Pagos.TiposFormasDePago.Caja: throw new NotImplementedException("No implementado: anular comprobante pagado con depósito en caja."); case Lbl.Pagos.TiposFormasDePago.CuentaCorriente: // Quito el saldo pagado de la cuenta corriente this.Cliente.CuentaCorriente.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Anulación " + this.ToString(), ImporteMovim, null, this, null, null); if (this.Tipo.EsNotaCredito) Lbl.Comprobantes.Recibo.DescancelarImpagos(this.Cliente, this.ComprobRelacionados, this, this.Compra ? -this.Total : this.Total); //this.Cliente.CuentaCorriente.CancelarComprobantesConSaldo(ImporteMovimCtaCte, false); break; case Lbl.Pagos.TiposFormasDePago.Tarjeta: case Pagos.TiposFormasDePago.OtroValor: Lbl.Pagos.Cupon Cupon = new Lbl.Pagos.Cupon(Connection, this); if (Cupon != null && Cupon.Existe) Cupon.Anular(); break; } } }
private Lfx.Types.OperationResult EditarPago() { Lbl.Comprobantes.ComprobanteConArticulos Factura = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; if (Factura.ImporteCancelado >= Factura.Total) return new Lfx.Types.FailureOperationResult("Este comprobante ya fue cancelado en su totalidad."); if (Factura.FormaDePago.Tipo == Lbl.Pagos.TiposFormasDePago.Efectivo) { using (IDbTransaction Trans = Factura.Connection.BeginTransaction()) { Factura.AsentarPago(false); Factura.MoverExistencias(false); Trans.Commit(); } this.PuedeEditarPago = false; } else if (Factura.FormaDePago.Tipo == Lbl.Pagos.TiposFormasDePago.CuentaCorriente) { CrearReciboParaEstaFactura(); } else { using (Comprobantes.Recibos.EditarCobro FormularioEditarPago = new Comprobantes.Recibos.EditarCobro()) { FormularioEditarPago.Cobro.FromCobro(new Lbl.Comprobantes.Cobro(this.Connection, Factura.FormaDePago)); FormularioEditarPago.Cobro.FormaDePagoEditable = true; FormularioEditarPago.Cobro.Importe = Factura.Total; FormularioEditarPago.Cobro.ImporteVisible = true; FormularioEditarPago.Cobro.ImporteEditable = false; if (FormularioEditarPago.ShowDialog() == DialogResult.OK) { Lbl.Comprobantes.Cobro MiCobro = FormularioEditarPago.Cobro.ToCobro(Factura.Connection); if (MiCobro.FormaDePago.Id != Factura.FormaDePago.Id) { // Tengo que actualizar la forma de pago using (IDbTransaction Trans = Factura.Connection.BeginTransaction()) { Factura.FormaDePago = MiCobro.FormaDePago; EntradaFormaPago.Elemento = MiCobro; Factura.Connection.FieldInt("UPDATE comprob SET id_formapago=" + MiCobro.FormaDePago.Id.ToString() + " WHERE id_comprob=" + Factura.Id.ToString()); if (MiCobro.FormaDePago.Tipo == Lbl.Pagos.TiposFormasDePago.CuentaCorriente) { // Si la nueva forma de pago es cta. cte., asiento el saldo // Y uso saldo a favor, si lo hay decimal Saldo = Factura.Cliente.CuentaCorriente.ObtenerSaldo(true); Factura.Cliente.CuentaCorriente.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Saldo a Cta. Cte. s/" + Factura.ToString(), Factura.ImporteImpago, null, Factura, null, null); if (Saldo < 0) { Saldo = Math.Abs(Saldo); if (Saldo > Factura.Total) Factura.CancelarImporte(Factura.Total, null); else Factura.CancelarImporte(Saldo, null); } } Trans.Commit(); } } switch (Factura.FormaDePago.Tipo) { case Lbl.Pagos.TiposFormasDePago.Efectivo: using (IDbTransaction TransEfe = Factura.Connection.BeginTransaction()) { Lbl.Cajas.Caja CajaDiaria = new Lbl.Cajas.Caja(Factura.Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria); CajaDiaria.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, Factura.ToString(), Factura.Cliente, Factura.ImporteImpago, Factura.Obs, Factura, null, null); Factura.CancelarImporte(Factura.Total, null); TransEfe.Commit(); } break; case Lbl.Pagos.TiposFormasDePago.CuentaCorriente: CrearReciboParaEstaFactura(); break; case Lbl.Pagos.TiposFormasDePago.ChequeTerceros: using (IDbTransaction TransCheTer = Factura.Connection.BeginTransaction()) { Lbl.Bancos.Cheque Cheque = MiCobro.Cheque; Cheque.Concepto = Lbl.Cajas.Concepto.IngresosPorFacturacion; Cheque.ConceptoTexto = "Cobro s/" + this.Elemento.ToString(); Cheque.Factura = Factura; Cheque.Guardar(); Factura.CancelarImporte(Factura.Total, null); TransCheTer.Commit(); } PuedeEditarPago = false; break; case Lbl.Pagos.TiposFormasDePago.Tarjeta: using (IDbTransaction TransTarj = Factura.Connection.BeginTransaction()) { Lbl.Pagos.Cupon CuponCredito = MiCobro.Cupon; CuponCredito.Concepto = Lbl.Cajas.Concepto.IngresosPorFacturacion; CuponCredito.ConceptoTexto = "Cobro s/" + Factura.ToString(); if (EntradaVendedor.ValueInt > 0) CuponCredito.Vendedor = new Lbl.Personas.Persona(Factura.Connection, EntradaVendedor.ValueInt); CuponCredito.Factura = Factura; CuponCredito.Guardar(); Factura.CancelarImporte(Factura.Total, null); TransTarj.Commit(); } PuedeEditarPago = false; break; case Lbl.Pagos.TiposFormasDePago.Caja: using (IDbTransaction TransCaja = Factura.Connection.BeginTransaction()) { Lbl.Cajas.Caja CajaDeposito = MiCobro.CajaDestino; CajaDeposito.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Cobro s/" + Factura.ToString(), Factura.Cliente, MiCobro.Importe, MiCobro.Obs, Factura, null, null); Factura.CancelarImporte(Factura.Total, null); TransCaja.Commit(); } PuedeEditarPago = false; break; default: throw new NotImplementedException("No se reconoce la forma de pago " + Factura.FormaDePago.Tipo.ToString()); } } else { return new Lfx.Types.SuccessOperationResult(); } } this.PuedeEditarPago = false; } return new Lfx.Types.SuccessOperationResult(); }
private void EntradaOrigenDestino_TextChanged(object sender, System.EventArgs e) { CajaOrigen = EntradaOrigen.Elemento as Lbl.Cajas.Caja; CajaDestino = EntradaDestino.Elemento as Lbl.Cajas.Caja; if (CajaOrigen == null || CajaDestino == null) return; MonedaOrigen = CajaOrigen.ObtenerMoneda(); MonedaDestino = CajaDestino.ObtenerMoneda(); if (MonedaOrigen != null && MonedaDestino != null) { EntradaImporte.Prefijo = MonedaOrigen.Simbolo; EntradaImporteDestino.Prefijo = MonedaDestino.Simbolo; if (MonedaDestino.Cotizacion != MonedaOrigen.Cotizacion) { EntradaImporteDestino.ValueDecimal = EntradaImporte.ValueDecimal * MonedaDestino.Cotizacion / MonedaOrigen.Cotizacion; EntradaImporteDestino.Visible = true; EtiquetaImporteDestino.Visible = true; // TODO: EntradaImporteDestino.ShowBalloon("Se realiza una conversión de moneda según la cotización " + System.Convert.ToString(MonedaOrigen["signo"]) + " " + Lfx.Types.Formatting.FormatCurrency(System.Convert.ToDecimal(MonedaOrigen["cotizacion"]), Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales) + " = " + System.Convert.ToString(MonedaDestino["signo"]) + " " + Lfx.Types.Formatting.FormatCurrency(System.Convert.ToDecimal(MonedaDestino["cotizacion"]), Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales)); } else { EntradaImporteDestino.Visible = false; EtiquetaImporteDestino.Visible = false; } } else { EntradaImporteDestino.Visible = false; EtiquetaImporteDestino.Visible = false; } }
private void BotonAcreditar_Click(object sender, System.EventArgs e) { if (Listado.CheckedItems.Count == 0) { Lui.Forms.MessageBox.Show("Debe marcar uno o más cupones para acreditar.", "Acreditar"); return; } using (Lfc.Tarjetas.Cupones.Acreditar FormularioAcreditacion = new Lfc.Tarjetas.Cupones.Acreditar()) { Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Acreditando cupones", "Se están marcando los cupones seleccionados como 'Acreditado'."); Progreso.Modal = false; decimal Total = 0; decimal TotalAcreditar = 0; int iCantidad = 0; System.Text.StringBuilder Cupones = new System.Text.StringBuilder(); decimal ComisionTarjeta = 0; decimal ComisionPlan = 0; decimal GestionDeCobro = 0; Progreso.Max = Listado.Items.Count + 2; Progreso.Begin(); Progreso.ChangeStatus("Analizando"); Lbl.Pagos.FormaDePago Tarjeta = null; foreach (System.Windows.Forms.ListViewItem itm in Listado.Items) { if (itm.Checked) { iCantidad++; Lbl.Pagos.Cupon Cupon = new Lbl.Pagos.Cupon(Connection, Lfx.Types.Parsing.ParseInt(itm.Text)); Total += Cupon.Importe; if (Cupones.Length > 0) Cupones.Append("," + Cupon.Numero); else Cupones.Append(Cupon.Numero); if (Cupon.FormaDePago != null) { if (Tarjeta == null) { Tarjeta = Cupon.FormaDePago; } else if (Tarjeta.Id != Cupon.FormaDePago.Id) { //Mezcla de tarjetas Progreso.End(); Lui.Forms.MessageBox.Show("No todos los cupones seleccionados pertenecen a la misma forma de pago.", "Error"); return; } ComisionTarjeta += Cupon.Importe * (Tarjeta.Retencion / 100); if (Cupon.Plan != null) { ComisionPlan += Cupon.Importe * (Cupon.Plan.Comision / 100); } } } Progreso.ChangeStatus(itm.Index); } FormularioAcreditacion.IgnorarCambios = true; FormularioAcreditacion.EntradaCuponesCantidad.Text = iCantidad.ToString(); FormularioAcreditacion.EntradaCuponesSubTotal.Text = Lfx.Types.Formatting.FormatCurrency(Total, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); FormularioAcreditacion.EntradaComisionTarjeta.Text = Lfx.Types.Formatting.FormatCurrency(ComisionTarjeta, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); FormularioAcreditacion.EntradaComisionPlan.Text = Lfx.Types.Formatting.FormatCurrency(ComisionPlan, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); FormularioAcreditacion.EntradaComisionUsuario.Text = "0"; FormularioAcreditacion.EntradaTotal.Text = Lfx.Types.Formatting.FormatCurrency(Total - ComisionTarjeta - ComisionPlan, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); FormularioAcreditacion.IgnorarCambios = false; bool Aceptar = false; Lfc.Comprobantes.Recibos.EditarCobro FormularioPago = new Lfc.Comprobantes.Recibos.EditarCobro(); do { if (FormularioAcreditacion.ShowDialog() == DialogResult.OK) { TotalAcreditar = Lfx.Types.Parsing.ParseCurrency(FormularioAcreditacion.EntradaTotal.Text); GestionDeCobro = Total - TotalAcreditar; FormularioPago.Cobro.FromCobro(new Lbl.Comprobantes.Cobro(this.Connection, ((Lbl.Pagos.TiposFormasDePago)(Lfx.Types.Parsing.ParseInt(FormularioAcreditacion.EntradaFormaPago.TextKey))))); FormularioPago.Cobro.FormaDePagoEditable = false; FormularioPago.Cobro.Importe = TotalAcreditar; FormularioPago.Cobro.ImporteEditable = false; if (Tarjeta != null && Tarjeta.Caja != null) FormularioPago.Cobro.EntradaCaja.ValueInt = Tarjeta.Caja.Id; FormularioPago.Cobro.Obs = "Cupones Nº " + Cupones.ToString(); FormularioPago.Cobro.ObsEditable = false; if (FormularioPago.ShowDialog() == DialogResult.OK) { Aceptar = true; break; } } else { Aceptar = false; break; } } while (true); if (Aceptar) { IDbTransaction Trans = Connection.BeginTransaction(IsolationLevel.Serializable); Progreso.ChangeStatus("Asentando el movimiento"); Progreso.Max = Listado.Items.Count + 2; Progreso.Begin(); // Marcar los cupones como acreditados foreach (System.Windows.Forms.ListViewItem itm in Listado.Items) { if (itm.Checked) { Lbl.Pagos.Cupon Cupon = new Lbl.Pagos.Cupon(this.Connection, Lfx.Types.Parsing.ParseInt(itm.Text)); if (Cupon.Estado == 0 || Cupon.Estado == 10) Cupon.Acreditar(); } Progreso.ChangeStatus(itm.Index); } Progreso.ChangeStatus("Acreditando el importe"); // Acreditar el dinero Lbl.Comprobantes.Cobro MiCobro = FormularioPago.Cobro.ToCobro(Connection); switch (FormularioPago.Cobro.FormaDePago.Tipo) { case Lbl.Pagos.TiposFormasDePago.Efectivo: Lbl.Cajas.Caja CajaDiaria = new Lbl.Cajas.Caja(Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria); CajaDiaria.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Acreditación de Cupones", null, Total, "Cupones Nº " + Cupones.ToString(), null, null, null); CajaDiaria.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 24010), "Gestión de Cobro de Cupones", null, -GestionDeCobro, "Cupones Nº " + Cupones.ToString(), null, null, null); break; case Lbl.Pagos.TiposFormasDePago.ChequePropio: Lbl.Bancos.Cheque Cheque = MiCobro.Cheque; Cheque.Concepto = Lbl.Cajas.Concepto.IngresosPorFacturacion; Cheque.ConceptoTexto = "Acreditación Tarjetas"; Cheque.Guardar(); break; case Lbl.Pagos.TiposFormasDePago.Caja: MiCobro.CajaDestino.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Acreditación de Cupones", null, Total, "Cupones Nº " + Cupones.ToString(), null, null, null); MiCobro.CajaDestino.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 24010), "Gestión de Cobro de Cupones", null, -GestionDeCobro, "Cupones Nº " + Cupones.ToString(), null, null, null); break; } Trans.Commit(); Progreso.End(); } } this.RefreshList(); }
private void MostrarDatos() { decimal ActivosCajas = 0; decimal PasivosCajas = 0; System.Data.DataTable Cajas = this.Connection.Select("SELECT * FROM cajas WHERE estado>0"); foreach (System.Data.DataRow Rw in Cajas.Rows) { Lbl.Cajas.Caja Cta = new Lbl.Cajas.Caja(this.Connection, (Lfx.Data.Row)Rw); decimal Saldo = Cta.ObtenerSaldo(false); if (Saldo > 0) { ActivosCajas += Saldo; } else { PasivosCajas += Math.Abs(Saldo); } } EntradaActivosCajas.Text = Lfx.Types.Formatting.FormatCurrency(ActivosCajas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); EntradaPasivosCajas.Text = Lfx.Types.Formatting.FormatCurrency(PasivosCajas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal ActivosStock = Connection.FieldDecimal("SELECT SUM(IFNULL(monedas.cotizacion, 1)*costo*stock_actual) FROM articulos JOIN monedas ON monedas.id_moneda=articulos.id_moneda WHERE costo>0 AND stock_actual>0"); EntradaActivosStock.Text = Lfx.Types.Formatting.FormatCurrency(ActivosStock, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal Activos = ActivosCajas + ActivosStock; EntradaActivosSubtotal.Text = Lfx.Types.Formatting.FormatCurrency(Activos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal FuturosTarjetas = 0.92m * Connection.FieldDecimal("SELECT SUM(importe) FROM tarjetas_cupones WHERE estado=10 OR (estado=0 AND fecha>DATE_SUB(NOW(), INTERVAL 45 DAY))"); //Tarjetas resta el 8% (estimado) de comisiones decimal Facturas = Connection.FieldDecimal("SELECT SUM(total)-SUM(cancelado) FROM comprob WHERE tipo_fac IN ('FA', 'FB', 'FC', 'FE', 'FM') AND impresa>0 AND numero>0 AND anulada=0 AND fecha >= '" + Lfx.Types.Formatting.FormatDateSql(DateTime.Now.AddYears(-2)) + "'"); EntradaCC.Text = Lfx.Types.Formatting.FormatCurrency(Facturas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal FuturosPedidos = Connection.FieldDecimal("SELECT SUM(total-gastosenvio) FROM comprob WHERE tipo_fac='PD' AND anulada=0 AND compra>0 AND estado=50"); EntradaFuturosTarjetas.Text = Lfx.Types.Formatting.FormatCurrency(FuturosTarjetas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); EntradaFuturosPedidos.Text = Lfx.Types.Formatting.FormatCurrency(FuturosPedidos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal Futuros = FuturosTarjetas + FuturosPedidos + Facturas; EntradaFuturosSubtotal.Text = Lfx.Types.Formatting.FormatCurrency(Futuros, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); EntradaActivosActualesFuturos.Text = Lfx.Types.Formatting.FormatCurrency(Activos + Futuros, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal PasivosCheques = Connection.FieldDecimal("SELECT SUM(importe) FROM bancos_cheques WHERE emitido>0 AND estado=0"); EntradaPasivosCheques.Text = Lfx.Types.Formatting.FormatCurrency(PasivosCheques, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal PasivosStock = Math.Abs(Connection.FieldDecimal("SELECT SUM(IFNULL(monedas.cotizacion, 1)*costo*stock_actual) FROM articulos JOIN monedas ON monedas.id_moneda=articulos.id_moneda WHERE costo>0 AND stock_actual<0")); EntradaPasivosStock.Text = Lfx.Types.Formatting.FormatCurrency(PasivosStock, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); decimal Pasivos = PasivosCajas + PasivosCheques + PasivosStock; EntradaPasivosSubtotal.Text = Lfx.Types.Formatting.FormatCurrency(Pasivos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); EntradaPatrimonioActual.Text = Lfx.Types.Formatting.FormatCurrency(Activos - Pasivos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); EntradaPatrimonioFuturo.Text = Lfx.Types.Formatting.FormatCurrency(Activos + Futuros - Pasivos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); }
public override Lfx.Types.OperationResult Guardar() { qGen.TableCommand Comando; if (this.Existe) { Comando = new qGen.Update(this.Connection, this.TablaDatos); Comando.WhereClause = new qGen.Where(this.CampoId, this.Id); } else { Comando = new qGen.Insert(this.Connection, this.TablaDatos); } Comando.Fields.AddWithValue("fecha", qGen.SqlFunctions.Now); if (this.Concepto == null) Comando.Fields.AddWithValue("id_concepto", null); else Comando.Fields.AddWithValue("id_concepto", this.Concepto.Id); if (this.ConceptoTexto == null || this.ConceptoTexto.Length == 0) { if (this.Concepto == null) Comando.Fields.AddWithValue("concepto", ""); else Comando.Fields.AddWithValue("concepto", this.Concepto.Nombre); } else { Comando.Fields.AddWithValue("concepto", this.ConceptoTexto); } if (this.Banco == null) Comando.Fields.AddWithValue("id_banco", null); else Comando.Fields.AddWithValue("id_banco", this.Banco.Id); if (this.Chequera == null) Comando.Fields.AddWithValue("id_chequera", null); else Comando.Fields.AddWithValue("id_chequera", this.Chequera.Id); Comando.Fields.AddWithValue("numero", this.Numero); Comando.Fields.AddWithValue("id_sucursal", Lfx.Workspace.Master.CurrentConfig.Empresa.SucursalActual); if (this.ReciboCobro == null) Comando.Fields.AddWithValue("id_recibo", null); else Comando.Fields.AddWithValue("id_recibo", this.ReciboCobro.Id); if (this.ReciboPago == null) Comando.Fields.AddWithValue("id_recibo_pago", null); else Comando.Fields.AddWithValue("id_recibo_pago", this.ReciboPago.Id); if (this.Cliente == null && this.ReciboCobro != null) this.Cliente = this.ReciboCobro.Cliente; if (this.Cliente == null && this.ReciboPago != null) this.Cliente = this.ReciboPago.Cliente; if (this.Cliente == null) Comando.Fields.AddWithValue("id_cliente", null); else Comando.Fields.AddWithValue("id_cliente", this.Cliente.Id); if (this.Factura == null) Comando.Fields.AddWithValue("id_comprob", null); else Comando.Fields.AddWithValue("id_comprob", this.Factura.Id); if (this.Emitido) Comando.Fields.AddWithValue("nombre", "Nº " + this.Numero + " por " + Lbl.Sys.Config.Moneda.Simbolo + " " + Lfx.Types.Formatting.FormatCurrency(this.Importe, 2)); else Comando.Fields.AddWithValue("nombre", "Nº " + this.Numero + " por " + Lbl.Sys.Config.Moneda.Simbolo + " " + Lfx.Types.Formatting.FormatCurrency(this.Importe, 2) + " emitido por " + this.Emisor); Comando.Fields.AddWithValue("importe", this.Importe); Comando.Fields.AddWithValue("fechaemision", this.FechaEmision); Comando.Fields.AddWithValue("emitidopor", this.Emisor); Comando.Fields.AddWithValue("emitido", this.Emitido ? 1 : 0); Comando.Fields.AddWithValue("estado", this.Estado); Comando.Fields.AddWithValue("fechacobro", this.FechaCobro); Comando.Fields.AddWithValue("obs", this.Obs); this.AgregarTags(Comando); this.Connection.Execute(Comando); if (this.Chequera != null) { qGen.Update ActualizarChequeras = new qGen.Update("chequeras"); ActualizarChequeras.Fields.AddWithValue("cheques_emitidos", new qGen.SqlExpression("cheques_emitidos+1")); ActualizarChequeras.WhereClause = new qGen.Where("id_chequera", this.Chequera.Id); this.Connection.Execute(ActualizarChequeras); } if (this.Existe == false && this.Emitido == false) { //Asiento en la cuenta cheques, sólo para cheques de cobro Cajas.Caja CajaCheques = new Lbl.Cajas.Caja(this.Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaCheques); Lbl.Personas.Persona UsarCliente = this.Cliente; if (UsarCliente == null && this.Factura != null) UsarCliente = this.Factura.Cliente; if (UsarCliente == null && this.ReciboCobro != null) UsarCliente = this.ReciboCobro.Cliente; if (UsarCliente == null && this.ReciboPago != null) UsarCliente = this.ReciboPago.Cliente; CajaCheques.Movimiento(true, this.Concepto, this.ConceptoTexto, UsarCliente, this.ReciboPago != null ? -this.Importe : this.Importe, this.ToString(), this.Factura, this.ReciboCobro != null ? this.ReciboCobro : this.ReciboPago, null); } return base.Guardar(); }
public void Anular() { if (this.Existe && this.Anulado == false) { if (this.Estado == 11) { // Cheque entregado, lo marco de nuevo como activo this.Estado = 0; } else { // Cheque activo, lo marco como anulado this.Estado = 90; } // Marco el recibo como anulado qGen.Update Act = new qGen.Update(this.TablaDatos); Act.ColumnValues.AddWithValue("estado", this.Estado); Act.WhereClause = new qGen.Where(this.CampoId, this.Id); this.Connection.ExecuteNonQuery(Act); if (this.Emitido == false) { //Asiento en la cuenta cheques, sólo para cheques de cobro Cajas.Caja CajaCheques = new Lbl.Cajas.Caja(this.Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaCheques); Lbl.Personas.Persona UsarCliente = this.Cliente; if (UsarCliente == null && this.Factura != null) { UsarCliente = this.Factura.Cliente; } if (UsarCliente == null && this.ReciboCobro != null) { UsarCliente = this.ReciboCobro.Cliente; } if (UsarCliente == null && this.ReciboPago != null) { UsarCliente = this.ReciboPago.Cliente; } string TextoConcepto; if (this.ReciboCobro != null && string.IsNullOrEmpty(this.ReciboCobro.ConceptoTexto) == false) { TextoConcepto = this.ReciboCobro.ConceptoTexto; } else if (this.ReciboPago != null && string.IsNullOrEmpty(this.ReciboPago.ConceptoTexto) == false) { TextoConcepto = this.ReciboPago.ConceptoTexto; } else if (string.IsNullOrEmpty(this.ConceptoTexto) == false) { TextoConcepto = this.ConceptoTexto; } else { TextoConcepto = this.ToString(); } CajaCheques.Movimiento(true, this.Concepto, "Anulación. " + TextoConcepto, UsarCliente, this.Estado == 1 ? this.Importe : -this.Importe, null, this.Factura, this.ReciboCobro != null ? this.ReciboCobro : this.ReciboPago, null); } Lbl.Sys.Config.ActionLog(this.Connection, Sys.Log.Acciones.Delete, this, null); } }
public override Lfx.Types.OperationResult Ok() { Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult(); if (EntradaCajaOrigen.ValueInt <= 0) { Res.Success = false; Res.Message += "Por favor seleccione la cuenta de origen." + Environment.NewLine; } if (EntradaTotal.ValueDecimal <= 0) { Res.Success = false; Res.Message += "El importe total debe ser mayor o igual a cero." + Environment.NewLine; } if (Res.Success == true) { decimal Impuestos = EntradaImpuestos.ValueDecimal; IDbTransaction Trans = null; if (this.Connection.InTransaction == false) { Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable); } string ChequesNum = null; System.Data.DataTable TablaCheques = Connection.Select("SELECT * FROM bancos_cheques WHERE id_cheque IN (" + ChequesIds + ")"); Lbl.Cajas.Caja CajaOrigen = new Lbl.Cajas.Caja(Connection, EntradaCajaOrigen.ValueInt); foreach (System.Data.DataRow RowCheque in TablaCheques.Rows) { Lbl.Bancos.Cheque Cheque = new Lbl.Bancos.Cheque(this.Connection, (Lfx.Data.Row)RowCheque); Cheque.Pagar(CajaOrigen); } if (Impuestos != 0) CajaOrigen.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 23030), "Impuestos de cheque(s)", null, -Impuestos, "Cheques Nº " + ChequesNum, null, null, null); if (Trans != null) { Trans.Commit(); } } return Res; }
public void Anular() { if (this.Existe && this.Anulado == false) { if (this.Estado == 11) // Cheque entregado, lo marco de nuevo como activo this.Estado = 0; else // Cheque activo, lo marco como anulado this.Estado = 90; // Marco el recibo como anulado qGen.Update Act = new qGen.Update(this.TablaDatos); Act.Fields.AddWithValue("estado", this.Estado); Act.WhereClause = new qGen.Where(this.CampoId, this.Id); this.Connection.Execute(Act); if (this.Emitido == false) { //Asiento en la cuenta cheques, sólo para cheques de cobro Cajas.Caja CajaCheques = new Lbl.Cajas.Caja(this.Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaCheques); Lbl.Personas.Persona UsarCliente = this.Cliente; if (UsarCliente == null && this.Factura != null) UsarCliente = this.Factura.Cliente; if (UsarCliente == null && this.ReciboCobro != null) UsarCliente = this.ReciboCobro.Cliente; if (UsarCliente == null && this.ReciboPago != null) UsarCliente = this.ReciboPago.Cliente; string TextoConcepto; if (this.ReciboCobro != null && string.IsNullOrEmpty(this.ReciboCobro.ConceptoTexto) == false) TextoConcepto = this.ReciboCobro.ConceptoTexto; else if (this.ReciboPago != null && string.IsNullOrEmpty(this.ReciboPago.ConceptoTexto) == false) TextoConcepto = this.ReciboPago.ConceptoTexto; else if (string.IsNullOrEmpty(this.ConceptoTexto) == false) TextoConcepto = this.ConceptoTexto; else TextoConcepto = this.ToString(); CajaCheques.Movimiento(true, this.Concepto, "Anulación. " + TextoConcepto, UsarCliente, this.Estado == 1 ? this.Importe : -this.Importe, null, this.Factura, this.ReciboCobro != null ? this.ReciboCobro : this.ReciboPago, null); } Lbl.Sys.Config.ActionLog(this.Connection, Sys.Log.Acciones.Delete, this, null); } }
private Lfx.Types.OperationResult EditarPago() { Lbl.Comprobantes.ComprobanteConArticulos Factura = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; if (Factura.ImporteCancelado >= Factura.Total) { return(new Lfx.Types.FailureOperationResult("Este comprobante ya fue cancelado en su totalidad.")); } if (Factura.FormaDePago.Tipo == Lbl.Pagos.TiposFormasDePago.Efectivo) { using (IDbTransaction Trans = Factura.Connection.BeginTransaction()) { Factura.AsentarPago(false); Factura.MoverExistencias(false); Trans.Commit(); } this.PuedeEditarPago = false; } else if (Factura.FormaDePago.Tipo == Lbl.Pagos.TiposFormasDePago.CuentaCorriente) { CrearReciboParaEstaFactura(); } else { using (Comprobantes.Recibos.EditarCobro FormularioEditarPago = new Comprobantes.Recibos.EditarCobro()) { FormularioEditarPago.Cobro.FromCobro(new Lbl.Comprobantes.Cobro(this.Connection, Factura.FormaDePago)); FormularioEditarPago.Cobro.FormaDePagoEditable = true; FormularioEditarPago.Cobro.Importe = Factura.Total; FormularioEditarPago.Cobro.ImporteVisible = true; FormularioEditarPago.Cobro.ImporteEditable = false; if (FormularioEditarPago.ShowDialog() == DialogResult.OK) { Lbl.Comprobantes.Cobro MiCobro = FormularioEditarPago.Cobro.ToCobro(Factura.Connection); if (MiCobro.FormaDePago.Id != Factura.FormaDePago.Id) { // Tengo que actualizar la forma de pago using (IDbTransaction Trans = Factura.Connection.BeginTransaction()) { Factura.FormaDePago = MiCobro.FormaDePago; EntradaFormaPago.Elemento = MiCobro; Factura.Connection.FieldInt("UPDATE comprob SET id_formapago=" + MiCobro.FormaDePago.Id.ToString() + " WHERE id_comprob=" + Factura.Id.ToString()); if (MiCobro.FormaDePago.Tipo == Lbl.Pagos.TiposFormasDePago.CuentaCorriente) { // Si la nueva forma de pago es cta. cte., asiento el saldo // Y uso saldo a favor, si lo hay decimal Saldo = Factura.Cliente.CuentaCorriente.ObtenerSaldo(true); Factura.Cliente.CuentaCorriente.AsentarMovimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Saldo a Cta. Cte. s/" + Factura.ToString(), Factura.ImporteImpago, null, Factura, null, null); if (Saldo < 0) { Saldo = Math.Abs(Saldo); if (Saldo > Factura.Total) { Factura.CancelarImporte(Factura.Total, null); } else { Factura.CancelarImporte(Saldo, null); } } } Trans.Commit(); } } switch (Factura.FormaDePago.Tipo) { case Lbl.Pagos.TiposFormasDePago.Efectivo: using (IDbTransaction TransEfe = Factura.Connection.BeginTransaction()) { Lbl.Cajas.Caja CajaDiaria = new Lbl.Cajas.Caja(Factura.Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria); CajaDiaria.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, Factura.ToString(), Factura.Cliente, Factura.ImporteImpago, Factura.Obs, Factura, null, null); Factura.CancelarImporte(Factura.Total, null); TransEfe.Commit(); } break; case Lbl.Pagos.TiposFormasDePago.CuentaCorriente: CrearReciboParaEstaFactura(); break; case Lbl.Pagos.TiposFormasDePago.ChequeTerceros: using (IDbTransaction TransCheTer = Factura.Connection.BeginTransaction()) { Lbl.Bancos.Cheque Cheque = MiCobro.Cheque; Cheque.Concepto = Lbl.Cajas.Concepto.IngresosPorFacturacion; Cheque.ConceptoTexto = "Cobro s/" + this.Elemento.ToString(); Cheque.Factura = Factura; Cheque.Guardar(); Factura.CancelarImporte(Factura.Total, null); TransCheTer.Commit(); } PuedeEditarPago = false; break; case Lbl.Pagos.TiposFormasDePago.Tarjeta: using (IDbTransaction TransTarj = Factura.Connection.BeginTransaction()) { Lbl.Pagos.Cupon CuponCredito = MiCobro.Cupon; CuponCredito.Concepto = Lbl.Cajas.Concepto.IngresosPorFacturacion; CuponCredito.ConceptoTexto = "Cobro s/" + Factura.ToString(); if (EntradaVendedor.ValueInt > 0) { CuponCredito.Vendedor = new Lbl.Personas.Persona(Factura.Connection, EntradaVendedor.ValueInt); } CuponCredito.Factura = Factura; CuponCredito.Guardar(); Factura.CancelarImporte(Factura.Total, null); TransTarj.Commit(); } PuedeEditarPago = false; break; case Lbl.Pagos.TiposFormasDePago.Caja: using (IDbTransaction TransCaja = Factura.Connection.BeginTransaction()) { Lbl.Cajas.Caja CajaDeposito = MiCobro.CajaDestino; CajaDeposito.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Cobro s/" + Factura.ToString(), Factura.Cliente, MiCobro.Importe, MiCobro.Obs, Factura, null, null); Factura.CancelarImporte(Factura.Total, null); TransCaja.Commit(); } PuedeEditarPago = false; break; default: throw new NotImplementedException("No se reconoce la forma de pago " + Factura.FormaDePago.Tipo.ToString()); } } else { return(new Lfx.Types.SuccessOperationResult()); } } this.PuedeEditarPago = false; } return(new Lfx.Types.SuccessOperationResult()); }