private void PonerTitulo() { Lbl.Comprobantes.ComprobanteConArticulos Registro = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; string NuevoTitulo = ""; if (Registro.Tipo != null) { NuevoTitulo += Registro.Tipo.NombreLargo; } if (Registro.Numero > 0) { NuevoTitulo += " "; if (Registro.PV > 0) { NuevoTitulo += Registro.PV.ToString("0000") + "-"; } NuevoTitulo += Registro.Numero.ToString("00000000"); } else { if (Registro.PV > 0) { NuevoTitulo += " PV " + Registro.PV.ToString("0000"); } } this.Text = NuevoTitulo; }
private void EntradaProductos_ObtenerDatosSeguimiento(object sender, EventArgs e) { Lcc.Entrada.Articulos.DetalleComprobante Prod = sender as Lcc.Entrada.Articulos.DetalleComprobante; if (Prod == null) { return; } int IdArticulo = Prod.ValueInt; if (IdArticulo == 0) { return; } decimal Cant = Prod.Cantidad; Lbl.Comprobantes.ComprobanteConArticulos Comprob = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; Lfc.Articulos.EditarSeguimiento Editar = new Lfc.Articulos.EditarSeguimiento(); Editar.Connection = this.Connection; Editar.Articulo = new Lbl.Articulos.Articulo(this.Connection, IdArticulo); Editar.Cantidad = Math.Abs(System.Convert.ToInt32(Cant)); Editar.SituacionOrigen = Comprob.SituacionOrigen; Editar.DatosSeguimiento = Prod.DatosSeguimiento; if (Editar.ShowDialog() == DialogResult.OK) { Prod.DatosSeguimiento = Editar.DatosSeguimiento; } }
public override Lfx.Types.OperationResult SolicitudEliminacion(Lbl.ListaIds codigos) { using (Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog(@"Una vez anulados, los comprobantes deberán ser archivados en todas sus copias y no podrán ser rehabilitados ni reutilizados.", @"¿Está seguro de que desea anular?")) { Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo; if (Pregunta.ShowDialog() == System.Windows.Forms.DialogResult.OK) { int IdRemito = codigos[0]; System.Data.IDbTransaction Trans = this.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable); System.Data.DataTable Tabla = this.Connection.Select("select id_comprob from comprob where id_remito=" + IdRemito + " and anulada=0;"); if (Tabla == null || Tabla.Rows.Count == 0) { Lbl.Comprobantes.ComprobanteConArticulos Rem = new Lbl.Comprobantes.ComprobanteConArticulos(Connection, IdRemito); if (Rem.Anulado == false) { Rem.Anular(false); Trans.Commit(); } } else { Lui.Forms.MessageBox.Show("No se puede anular si se encuentra relacionada con una factura", "¡Error!"); } } } return(new Lfx.Types.SuccessOperationResult()); }
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()); }
public override void AfterPrint() { PuedeEditarPago = this.EsCancelable(); Lbl.Comprobantes.ComprobanteConArticulos Comprob = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; if (Comprob.Impreso) { switch (Comprob.FormaDePago.Tipo) { case Lbl.Pagos.TiposFormasDePago.Efectivo: //El pago lo asentó la rutina de impresión //Yo sólo muestro la ventanita de calcular el cambio Comprobantes.PagoVuelto FormularioVuelto = new Comprobantes.PagoVuelto(); FormularioVuelto.Total = Lfx.Types.Parsing.ParseCurrency(EntradaTotal.Text); FormularioVuelto.ShowDialog(); break; case Lbl.Pagos.TiposFormasDePago.ChequePropio: case Lbl.Pagos.TiposFormasDePago.ChequeTerceros: case Lbl.Pagos.TiposFormasDePago.Tarjeta: case Lbl.Pagos.TiposFormasDePago.OtroValor: case Lbl.Pagos.TiposFormasDePago.Caja: if (this.EsCancelable()) { EditarPago(); } break; } } }
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(); }
public Lbl.Comprobantes.ColeccionDetalleArticulos ObtenerArticulos(Lbl.Comprobantes.ComprobanteConArticulos comprobante) { if (m_Articulos == null) { m_Articulos = new Lbl.Comprobantes.ColeccionDetalleArticulos(comprobante); } else { m_Articulos.Clear(); } int i = 1; foreach (DetalleCompra Pro in this.ChildControls) { if (Pro.IsEmpty == false) { Lbl.Comprobantes.DetalleArticulo DetArt = new Lbl.Comprobantes.DetalleArticulo(comprobante); DetArt.Articulo = Pro.Articulo; DetArt.Alicuota = Pro.Alicuota; DetArt.Nombre = Pro.TextDetail; DetArt.Orden = i++; DetArt.Cantidad = Pro.Cantidad; DetArt.ImporteIvaUnitario = Pro.ImporteIvaUnitario; DetArt.ImporteUnitario = Pro.ImporteUnitario; DetArt.ImporteNoGravado = Pro.ImporteNoGravado; DetArt.Descuento = Pro.Descuento; DetArt.DatosSeguimiento = Pro.DatosSeguimiento; m_Articulos.Add(DetArt); } } return(m_Articulos); }
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(); }
public Anular(string tipo) { if (Lbl.Sys.Config.Actual.UsuarioConectado.TienePermiso(typeof(Lbl.Comprobantes.Factura), Lbl.Sys.Permisos.Operaciones.Eliminar) == false) { this.DialogResult = System.Windows.Forms.DialogResult.Abort; this.Close(); return; } InitializeComponent(); string[] param = tipo.Split('®'); // Lleno el listado de tipos de factura List <Lbl.Comprobantes.Tipo> TiposFacturaVenta = new List <Lbl.Comprobantes.Tipo>(); foreach (Lbl.Comprobantes.Tipo Tp in Lbl.Comprobantes.Tipo.TodosPorLetra.Values) { if (Tp.EsFacturaOTicket && Tp.PermiteVenta) { TiposFacturaVenta.Add(Tp); } } string[] ListaFactVenta = new string[TiposFacturaVenta.Count]; int i = 0; foreach (Lbl.Comprobantes.Tipo Tp in TiposFacturaVenta) { ListaFactVenta[i++] = Tp.NombreLargo + "|" + Tp.LetraONomenclatura; } this.EntradaTipo.SetData = ListaFactVenta; OkButton.Text = "Anular"; OkButton.Visible = false; if (param.Length > 1) { EntradaCompra.ValueInt = int.Parse(param[1]); this.DeCompra = param[1] == "0" ? false : true; tipo = param[0]; } int IdFac = int.Parse(tipo); Lbl.Comprobantes.ComprobanteConArticulos Fac = new Lbl.Comprobantes.ComprobanteConArticulos(this.Connection, IdFac); if (Fac != null) { if (Fac.Numero == 0) { IdAnular = Fac.Id; MostrarVistaPrevia(); } EntradaPV.ValueInt = Fac.PV; EntradaDesde.ValueInt = EntradaHasta.ValueInt = Fac.Numero; if (Fac.TipoFac.Length > 1) { EntradaTipo.TextKey = Fac.TipoFac.Substring(1); } } }
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); }
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); }
/// <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); }
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); }
internal bool EsCancelable() { Lbl.Comprobantes.ComprobanteConArticulos Comprob = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; if (Comprob == null || Comprob.ImporteImpago == 0) { return(false); } else { return(Comprob.Impreso && Comprob.Anulado == false && Comprob.Existe && Comprob.FormaDePago != null); } }
public override void ActualizarControl() { IgnorarEventos = true; Lbl.Comprobantes.ComprobanteConArticulos Comprob = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; this.SuspendLayout(); EntradaPV.Text = Comprob.PV.ToString(); EntradaVendedor.Elemento = Comprob.Vendedor; Ignorar_EntradaCliente_TextChanged = true; EntradaCliente.Elemento = Comprob.Cliente; Ignorar_EntradaCliente_TextChanged = false; if (this.DiscriminarIva) { EntradaSubTotal.ValueDecimal = Comprob.SubtotalSinIva; EntradaIva.ValueDecimal = Comprob.ImporteIvaDiscriminado; } else { EntradaSubTotal.ValueDecimal = Comprob.SubtotalSinIva + Comprob.ImporteIva; EntradaIva.ValueDecimal = 0m; } EntradaDescuento.ValueDecimal = Comprob.Descuento; EntradaInteres.ValueDecimal = Comprob.Recargo; EntradaCuotas.ValueInt = Comprob.Cuotas; EntradaSubTotalIva.ValueDecimal = EntradaSubTotal.ValueDecimal + EntradaIva.ValueDecimal; EntradaTotal.ValueDecimal = Comprob.Total; if (this.Elemento.Existe == true || this.PuedeEditar() == false) { // No actualizar automáticamente detalles EntradaProductos.AutoUpdate = false; } else { EntradaProductos.AutoUpdate = true; } // Cargo el detalle del comprobante EntradaProductos.CargarArticulos(Comprob.Articulos); this.ResumeLayout(); this.PonerTitulo(); base.ActualizarControl(); IgnorarEventos = false; }
public override bool PuedeImprimir() { Lbl.Comprobantes.ComprobanteConArticulos Comprob = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; if (Comprob.Tipo != null && Comprob.Tipo.PermiteImprimirVariasVeces == false && Comprob.Impreso) { return(false); } else { return(base.PuedeImprimir()); } }
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_concepto") > 0) { this.Concepto = new Cajas.Concepto(this.Connection, this.GetFieldValue <int>("id_concepto")); } else { this.Concepto = null; } if (this.GetFieldValue <int>("id_chequera") > 0) { this.Chequera = new Bancos.Chequera(this.Connection, this.GetFieldValue <int>("id_chequera")); } else { this.Chequera = null; } if (this.GetFieldValue <int>("id_cliente") > 0) { this.Cliente = new Personas.Persona(this.Connection, this.GetFieldValue <int>("id_cliente")); } else { this.Cliente = null; } if (this.GetFieldValue <int>("id_comprob") > 0) { this.Factura = new Comprobantes.ComprobanteConArticulos(this.Connection, this.GetFieldValue <int>("id_comprob")); } else { this.Factura = null; } } base.OnLoad(); }
private void CrearReciboParaEstaFactura() { Lbl.Comprobantes.ComprobanteConArticulos Factura = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; Lbl.Comprobantes.ReciboDeCobro Recibo = new Lbl.Comprobantes.ReciboDeCobro(Lfx.Workspace.Master.GetNewConnection("Nuevo recibo para " + Factura.ToString()) as Lfx.Data.Connection); Recibo.Crear(); Recibo.Facturas.AddWithValue(Factura, Factura.ImporteImpago); Recibo.Cliente = Factura.Cliente; Recibo.Concepto = Lbl.Cajas.Concepto.IngresosPorFacturacion; Recibo.ConceptoTexto = "Cancelación de " + Factura.ToString(); Lfc.FormularioEdicion NuevoRecibo = Lfc.Instanciador.InstanciarFormularioEdicion(Recibo); NuevoRecibo.MdiParent = this.ParentForm.MdiParent; NuevoRecibo.Show(); }
public override void ActualizarElemento() { Lbl.Comprobantes.ComprobanteConArticulos Comprob = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; Comprob.PV = EntradaPV.ValueInt; Comprob.Vendedor = new Lbl.Personas.Persona(Comprob.Connection, EntradaVendedor.ValueInt); Comprob.Cliente = new Lbl.Personas.Persona(Comprob.Connection, EntradaCliente.ValueInt); Comprob.Descuento = EntradaDescuento.ValueDecimal; Comprob.Recargo = EntradaInteres.ValueDecimal; Comprob.Cuotas = EntradaCuotas.ValueInt; Comprob.Articulos = EntradaProductos.ObtenerArticulos(Comprob); base.ActualizarElemento(); }
public Lfx.Types.OperationResult ImprimirFacturaElectronicaAfip(Lbl.Comprobantes.ComprobanteConArticulos comprobante) { Lfx.Types.OperationResult Res = this.IniciarWsAfip(); if (Res.Success == false) { return(Res); } var TipoComprob = Afip.Ws.FacturaElectronica.Tablas.ComprobantesTiposPorLetra[comprobante.Tipo.Nomenclatura]; var UltimoComprob = CliFe.UltimoComprobante(comprobante.PV, TipoComprob); int ProximoNumero = UltimoComprob.CbteNro + 1; var SolCae = Util.Comprobantes.ClienteAfipWsfe.CrearSolicitudCae(comprobante, ProximoNumero); var CantidadImpresos = CliFe.SolictarCae(SolCae); // TODO: tratamiento de errores foreach (var Comprob in SolCae.Comprobantes) { if (Comprob.Cae != null && string.IsNullOrWhiteSpace(Comprob.Cae.CodigoCae) == false) { new Lbl.Comprobantes.Numerador(comprobante).Numerar(Comprob.Numero, Comprob.Cae.CodigoCae, Comprob.Cae.Vencimiento, true); this.GenerarPdf(comprobante); } } if (CantidadImpresos > 0) { // La solicitud tuvo éxito (total o parcial) return(new Lfx.Types.SuccessOperationResult()); } else { // La solicitud de CAE fue rechazada if (SolCae.Observaciones.Count > 0) { return(new Lfx.Types.FailureOperationResult(SolCae.Observaciones[0].Mensaje)); } else { return(new Lfx.Types.FailureOperationResult("La solicitud de CAE fue rechazada")); } } }
public override bool PuedeEditar() { Lbl.Comprobantes.ComprobanteConArticulos Comprob = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; if (Comprob.Estado != 0) { return(false); } else if (Comprob.Impreso && Comprob.Tipo != null && Comprob.Tipo.PermiteModificarImpresos == false) { return(false); } else { return(base.PuedeEditar()); } }
/// <summary> /// Generar un PDF a partir de un comprobante y guardarlo en la carpeta predeterminada de comprobantes. /// </summary> public void GenerarPdf(Lbl.Comprobantes.ComprobanteConArticulos comprobante) { var Generador = new Util.Comprobantes.GeneradorPdf(comprobante); var VariantePv = Lbl.Comprobantes.PuntoDeVenta.TodosPorNumero[comprobante.PV].Variante; if (VariantePv > 0) { Generador.Variante = (Util.Comprobantes.Variantes)VariantePv; } var Carpeta = System.IO.Path.Combine(Lbl.Sys.Config.CarpetaEmpresa, "Comprobantes", "PV" + comprobante.PV.ToString()); Lfx.Environment.Folders.EnsurePathExists(Carpeta); Generador.GenerarYGuardar(System.IO.Path.Combine(Carpeta, comprobante.ToString() + ".pdf")); }
public override void ActualizarElemento() { Lbl.Comprobantes.ComprobanteConArticulos Res = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; //Agrego campos propios de esta instancia if (EntradaFormaPago.ValueInt > 0) { Res.FormaDePago = new Lbl.Pagos.FormaDePago(Res.Connection, EntradaFormaPago.ValueInt); } else { Res.FormaDePago = null; } if (PanelComprobanteOriginal.Visible) { Res.ComprobanteOriginal = EntradaComprobanteOriginal.Elemento as Lbl.Comprobantes.ComprobanteFacturable; } if (EntradaRemito.Text.Length > 0) { int RemitoNumero, RemitoPv; if (EntradaRemito.Text.IndexOfAny(new char[] { '-' }) >= 0) { // El número de remito tiene guión string[] Partes = EntradaRemito.Text.Split(new char[] { '-' }); RemitoNumero = Lfx.Types.Parsing.ParseInt(Partes[0]); RemitoPv = Lfx.Types.Parsing.ParseInt(Partes[1]); } else { // El número de remito no tiene guión, asumo el mismo PV que la factura RemitoNumero = EntradaRemito.ValueInt; RemitoPv = EntradaPV.ValueInt; } Res.IdRemito = this.Connection.FieldInt("SELECT id_comprob FROM comprob WHERE compra=0 AND tipo_fac!='R' AND pv=" + RemitoPv.ToString() + " AND numero=" + RemitoNumero.ToString() + " AND impresa>0 AND anulada=0"); } else { Res.IdRemito = 0; } base.ActualizarElemento(); }
internal virtual Lfx.Types.OperationResult ConvertirEn(string tipoComprob) { Lbl.Comprobantes.ComprobanteConArticulos Comprob = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; if (Comprob.Existe) { Lbl.Comprobantes.Tipo NuevoTipo = Lbl.Comprobantes.Tipo.TodosPorLetra[tipoComprob]; Lbl.Comprobantes.ComprobanteConArticulos Nuevo = Comprob.Convertir(NuevoTipo) as Lbl.Comprobantes.ComprobanteConArticulos; FormularioEdicion NuevoComprob = Instanciador.InstanciarFormularioEdicion(Nuevo); NuevoComprob.ControlDestino = EntradaComprobanteId; NuevoComprob.MdiParent = this.ParentForm.MdiParent; NuevoComprob.Show(); return(new Lfx.Types.SuccessOperationResult()); } else { return(new Lfx.Types.FailureOperationResult("Debe guardar el comprobante antes de poder convertirlo.")); } }
private void MostrarSinNumero() { label3.Visible = EntradaAnularPagos.Visible = EntradaTipo.Visible = EntradaCompra.Visible = false; EntradaDesde.Visible = EntradaHasta.Visible = EntradaPV.Visible = false; Lbl.Comprobantes.ComprobanteConArticulos Fac = new Lbl.Comprobantes.ComprobanteConArticulos(this.Connection, IdAnular); if (Fac != null) { ListadoFacturas.BeginUpdate(); ListadoFacturas.Items.Clear(); ListViewItem Itm = ListadoFacturas.Items.Add(Fac.Tipo.ToString()); Itm.SubItems.Add(Fac.PV.ToString("0000") + "-" + Fac.Numero.ToString("00000000")); Itm.SubItems.Add(Fac.Fecha.ToString(Lfx.Types.Formatting.DateTime.ShortDatePattern)); Itm.SubItems.Add(Fac.Cliente.ToString()); Itm.SubItems.Add(Lfx.Types.Formatting.FormatCurrency(Fac.Total)); ListadoFacturas.EndUpdate(); EtiquetaAviso.Text = "Se van a anular un comprobante, que no tiene n° asignado."; this.OkButton.Visible = true; } }
public override void AfterPrint() { PuedeEditarPago = this.EsCancelable(); Lbl.Comprobantes.ComprobanteConArticulos Comprob = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; if (Comprob.Impreso) { if (Lbl.Comprobantes.PuntoDeVenta.TodosPorNumero.ContainsKey(Comprob.PV)) { var Pv = Lbl.Comprobantes.PuntoDeVenta.TodosPorNumero[Comprob.PV]; if (Pv.Tipo == Lbl.Comprobantes.TipoPv.ElectronicoAfip) { // Es un punto de venta electrónico... abro el PDF generado var Carpeta = System.IO.Path.Combine(Lbl.Sys.Config.CarpetaEmpresa, "Comprobantes", "PV" + Comprob.PV.ToString()); System.Diagnostics.Process.Start(System.IO.Path.Combine(Carpeta, Comprob.ToString() + ".pdf")); } } switch (Comprob.FormaDePago.Tipo) { case Lbl.Pagos.TiposFormasDePago.Efectivo: //El pago lo asentó la rutina de impresión //Yo sólo muestro la ventanita de calcular el cambio Comprobantes.PagoVuelto FormularioVuelto = new Comprobantes.PagoVuelto(); FormularioVuelto.Total = Lfx.Types.Parsing.ParseCurrency(EntradaTotal.Text); FormularioVuelto.ShowDialog(); break; case Lbl.Pagos.TiposFormasDePago.ChequePropio: case Lbl.Pagos.TiposFormasDePago.ChequeTerceros: case Lbl.Pagos.TiposFormasDePago.Tarjeta: case Lbl.Pagos.TiposFormasDePago.OtroValor: case Lbl.Pagos.TiposFormasDePago.Caja: if (this.EsCancelable()) { EditarPago(); } break; } } }
new public ComprobanteDeCompra Convertir(Tipo tipo) { if (tipo.NombreTipoLbl == "Lbl.Comprobantes.Remito") { tipo.NombreTipoLbl = "Lbl.Comprobantes.RemitoCompra"; } if (tipo.NombreTipoLbl == "Lbl.Comprobantes.Factura") { tipo.NombreTipoLbl = "Lbl.Comprobantes.ComprobanteDeCompra"; } Lbl.Comprobantes.ComprobanteConArticulos Res = base.Convertir(tipo); Res.Compra = true; Res.Fecha = DateTime.Now; if (tipo.NombreTipoLbl == "Lbl.Comprobantes.RemitoCompra") { tipo.NombreTipoLbl = "Lbl.Comprobantes.Remito"; } return((ComprobanteDeCompra)Res); }
private bool AnularSinNumero() { Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Anulando comprobantes", "Se están anulando los comprobantes seleccionados."); Progreso.Cancelable = true; Progreso.Max = 1; Progreso.Begin(); IDbTransaction Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable); Lbl.Comprobantes.ComprobanteConArticulos Fac = new Lbl.Comprobantes.ComprobanteConArticulos(Connection, IdAnular); if (Fac.Anulado == false) { Fac.Anular(false); } Progreso.Advance(1); Progreso.End(); if (Progreso.Cancelar) { Trans.Rollback(); Lfx.Workspace.Master.RunTime.Toast("La operación fue cancelada.", "Aviso"); return(false); } else { Trans.Commit(); ProximosNumeros.Clear(); if (this.DeCompra) { Lui.Forms.MessageBox.Show("Se anularon los comprobantes seleccionados. Si fueron anulados por error de carga, ahora puede cargarlos nuevamente.", "Aviso"); } else { Lui.Forms.MessageBox.Show("Se anularon los comprobantes seleccionados. Recuerde archivar ambas copias.", "Aviso"); } return(true); } }
private void EditarMasDatos() { Lbl.Comprobantes.ComprobanteConArticulos Registro = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; using (Comprobantes.FormComprobanteMasDatos FormMasDatos = new Comprobantes.FormComprobanteMasDatos()) { FormMasDatos.Owner = this.ParentForm; FormMasDatos.EntradaDesdeSituacion.Elemento = Registro.SituacionOrigen; FormMasDatos.EntradaHaciaSituacion.Elemento = Registro.SituacionDestino; FormMasDatos.EntradaDesdeSituacion.TemporaryReadOnly = EntradaCliente.TemporaryReadOnly; FormMasDatos.EntradaHaciaSituacion.TemporaryReadOnly = EntradaCliente.TemporaryReadOnly; FormMasDatos.EntradaBloqueada.TextKey = ((Lbl.ICamposBaseEstandar)(this.Elemento)).Estado.ToString(); if (Registro.Tipo.EsFactura) { FormMasDatos.EntradaDesdeSituacion.Filter = "facturable=1"; } else { FormMasDatos.EntradaDesdeSituacion.Filter = ""; } if (FormMasDatos.ShowDialog() == DialogResult.OK) { Lbl.Articulos.Situacion NuevoOrigen = FormMasDatos.EntradaDesdeSituacion.Elemento as Lbl.Articulos.Situacion; if ((NuevoOrigen == null && Registro.SituacionOrigen != null) || (NuevoOrigen != null && Registro.SituacionOrigen == null) || (NuevoOrigen != null && NuevoOrigen.Id != Registro.SituacionOrigen.Id)) { // Cambió la situación de origen... borro los datos de seguimiento EntradaProductos.BorrarDatosDeSeguimiento(); } Registro.SituacionOrigen = NuevoOrigen; Registro.SituacionDestino = FormMasDatos.EntradaHaciaSituacion.Elemento as Lbl.Articulos.Situacion; ((Lbl.ICamposBaseEstandar)(this.Elemento)).Estado = Lfx.Types.Parsing.ParseInt(FormMasDatos.EntradaBloqueada.TextKey); this.TemporaryReadOnly = Lfx.Types.Parsing.ParseInt(FormMasDatos.EntradaBloqueada.TextKey) != 0; } } }
private void Convertir() { Comprobantes.Convertir FormConvertir = new Comprobantes.Convertir(); FormConvertir.OrigenTipo = this.Tipo.Nomenclatura; FormConvertir.DestinoTipo = "F"; FormConvertir.OrigenNombre = this.Elemento.ToString(); if (FormConvertir.ShowDialog() == DialogResult.OK) { string ConvertirEnTipo = FormConvertir.DestinoTipo; if (ConvertirEnTipo == "F" || ConvertirEnTipo == "NC" || ConvertirEnTipo == "ND") { if (this.Tipo.Letra.Length > 0 && "ABCEM".IndexOf(this.Tipo.Letra) >= 0) { ConvertirEnTipo += this.Tipo.Letra; } else { Lbl.Comprobantes.ComprobanteConArticulos Compr = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; if (Compr != null && Compr.Cliente != null && Compr.Cliente.LetraPredeterminada().Length > 0) { ConvertirEnTipo += Compr.Cliente.LetraPredeterminada(); } else { ConvertirEnTipo += "B"; } } } Lfx.Types.OperationResult Resultado = ConvertirEn(ConvertirEnTipo); if (Resultado.Success == false) { Lui.Forms.MessageBox.Show(Resultado.Message, "Error"); } } }
public Lazaro.Impresion.Comprobantes.Fiscal.Respuesta ImprimirComprobante(int idComprob) { try { using (System.Diagnostics.Process Yo = System.Diagnostics.Process.GetCurrentProcess()) { Yo.PriorityClass = System.Diagnostics.ProcessPriorityClass.AboveNormal; } } catch { // No siempre puedo elevar mi propia prioridad (creo que sólo en Windows XP o en Vista/7 sin UAC) } // *** Inicializar la impresora fiscal Lazaro.Impresion.Comprobantes.Fiscal.Respuesta Res = this.Inicializar(); if (Res.Error != ErroresFiscales.Ok) return Res; NotificacionEventHandler NotifHandler = Notificacion; if (NotifHandler != null) NotifHandler(this, new ImpresoraEventArgs(ImpresoraEventArgs.EventTypes.InicioImpresion)); // *** Obtener datos previos Lbl.Comprobantes.ComprobanteConArticulos Comprob = new Lbl.Comprobantes.ComprobanteConArticulos(DataBase, idComprob); if (Comprob.Impreso) return new Respuesta(ErroresFiscales.Ok); string TipoDocumento = null; string Letra = null; switch (Modelo) { case Lbl.Impresion.ModelosFiscales.EpsonTiquedora: if (Comprob.Tipo.EsNotaDebito) { TipoDocumento = "D"; } else if (Comprob.Tipo.EsNotaCredito) { TipoDocumento = "M"; } else { TipoDocumento = "T"; } break; default: if (Comprob.Tipo.EsNotaDebito) { TipoDocumento = "D"; } else if (Comprob.Tipo.EsNotaCredito) { TipoDocumento = "C"; } else if (Comprob.Tipo.EsTicket) { TipoDocumento = "T"; } else { TipoDocumento = "F"; } break; } switch (Comprob.Tipo.Nomenclatura) { case "FM": case "NDM": case "NCM": Letra = "M"; break; case "FA": case "NDA": Letra = "A"; break; case "NCA": if (Modelo == Lbl.Impresion.ModelosFiscales.HasarTiquedora) Letra = "R"; else Letra = "A"; break; case "FB": case "NDB": Letra = "B"; break; case "NCB": if (Modelo == Lbl.Impresion.ModelosFiscales.HasarTiquedora) Letra = "S"; else Letra = "B"; break; case "FC": case "NDC": Letra = "C"; break; case "NCC": if (Modelo == Lbl.Impresion.ModelosFiscales.HasarTiquedora) Letra = "S"; else Letra = "C"; break; case "FE": case "NDE": case "NCE": Letra = "E"; break; } string ClienteTipoDoc = "DNI"; string ClienteNumDoc = Comprob.Cliente.NumeroDocumento.Replace("-", "").Replace(".", ""); if (Comprob.Cliente.TipoDocumento != null) { switch (Comprob.Cliente.TipoDocumento.Id) { case 1: ClienteTipoDoc = "DNI"; break; case 2: ClienteTipoDoc = "LE"; break; case 3: ClienteTipoDoc = "LC"; break; case 4: ClienteTipoDoc = "CI"; break; case 5: if (ClienteNumDoc.Length > 0) ClienteTipoDoc = "CUIL"; break; case 6: if (ClienteNumDoc.Length > 0) ClienteTipoDoc = "CUIT"; break; default: ClienteTipoDoc = "DNI"; break; } } if (Comprob.Cliente.SituacionTributaria != null) { switch (Comprob.Cliente.SituacionTributaria.Id) { case 1: ClienteNumDoc = Comprob.Cliente.NumeroDocumento.Replace("-", "").Replace(" ", "").Replace(".", ""); ClienteTipoDoc = "DNI"; break; case 2: ClienteTipoDoc = "CUIT"; ClienteNumDoc = Comprob.Cliente.ClaveTributaria.ToString().Replace("-", ""); break; case 3: ClienteTipoDoc = "CUIT"; ClienteNumDoc = Comprob.Cliente.ClaveTributaria.ToString().Replace("-", ""); break; case 4: ClienteTipoDoc = "CUIT"; ClienteNumDoc = Comprob.Cliente.ClaveTributaria.ToString().Replace("-", ""); break; case 5: ClienteTipoDoc = "CUIT"; ClienteNumDoc = Comprob.Cliente.ClaveTributaria.ToString().Replace("-", ""); break; } } Comando ComandoAEnviar; string TextoRemitoLinea1 = ""; string TextoRemitoLinea2 = ""; if (Comprob.IdRemito == 0) { if (Comprob.Obs == null) { TextoRemitoLinea1 = ""; } else if (Comprob.Obs.Length > 40) { TextoRemitoLinea1 = Comprob.Obs.Substring(0, 40); int RestoObs = Comprob.Obs.Length - 40; if (RestoObs > 40) RestoObs = 40; TextoRemitoLinea2 = Comprob.Obs.Substring(40, RestoObs); } else { TextoRemitoLinea1 = Comprob.Obs; } } else { TextoRemitoLinea1 = "Remito(s) " + Comprob.IdRemito.ToString(); } string Domicilio = Comprob.Cliente.Domicilio; string ClienteLocalidad = ""; if (Comprob.Cliente.Localidad != null) ClienteLocalidad = Comprob.Cliente.Localidad.ToString(); //si hay un documento abierto (fiscal, no fiscal o no fiscal homologado) lo cancelo Res = ObtenerEstadoImpresora(); if (Res.EstadoFiscal.DocumentoAbierto) { Res = CancelarDocumentoFiscal(); System.Threading.Thread.Sleep(500); } // *** Abrir Documento if (NotifHandler != null) NotifHandler(this, new ImpresoraEventArgs("Abrir documento fiscal")); switch (Modelo) { case Lbl.Impresion.ModelosFiscales.EpsonTiquedora: case Lbl.Impresion.ModelosFiscales.EpsonGenerico: case Lbl.Impresion.ModelosFiscales.Emulacion: string ClienteLinea1 = ""; string ClienteLinea2 = ""; if (Comprob.Cliente.ToString().Length > 40) { ClienteLinea1 = Comprob.Cliente.ToString().Substring(0, 40); ClienteLinea2 = Comprob.Cliente.ToString().Substring(40, Comprob.Cliente.ToString().Length - 40); } else { ClienteLinea1 = Comprob.Cliente.ToString(); ClienteLinea2 = ""; } if (Domicilio.Length > 40) Domicilio = Domicilio.Substring(0, 40); if (ClienteLocalidad.Length > 40) ClienteLocalidad = ClienteLocalidad.Substring(0, 40); string ClienteSituacionEpson = ""; switch (Comprob.Cliente.SituacionTributaria.Id) { case 1: ClienteSituacionEpson = "F"; break; case 2: ClienteSituacionEpson = "I"; break; case 3: ClienteSituacionEpson = "R"; break; case 4: ClienteSituacionEpson = "M"; break; case 5: ClienteSituacionEpson = "E"; break; default: ClienteSituacionEpson = "S"; break; } if (Modelo == Lbl.Impresion.ModelosFiscales.EpsonTiquedora) { // La impresora epson TMU220 no acepta vacios por eso cambio por un punto. string Vacio="."; if (TextoRemitoLinea1=="") TextoRemitoLinea1 = "."; if (TextoRemitoLinea2 == "") TextoRemitoLinea2 = "."; ComandoAEnviar = new Comando(CodigosComandosFiscales.EpsonDocumentoFiscalAbrir, TipoDocumento, "C", Letra, "1", "P", "10", "I", FiscalizarTexto(ClienteSituacionEpson), FiscalizarTexto(ClienteLinea1), FiscalizarTexto(ClienteLinea2), FiscalizarTexto(ClienteTipoDoc), FiscalizarTexto(ClienteNumDoc), "N", FiscalizarTexto(Domicilio), FiscalizarTexto(ClienteLocalidad), Vacio, FiscalizarTexto(TextoRemitoLinea1), FiscalizarTexto(TextoRemitoLinea2), "C"); } else { ComandoAEnviar = new Comando(CodigosComandosFiscales.EpsonDocumentoFiscalAbrir, TipoDocumento, "C", Letra, "1", "F", "12", "I", FiscalizarTexto(ClienteSituacionEpson), FiscalizarTexto(ClienteLinea1), FiscalizarTexto(ClienteLinea2), FiscalizarTexto(ClienteTipoDoc), FiscalizarTexto(ClienteNumDoc), "N", FiscalizarTexto(Domicilio), FiscalizarTexto(ClienteLocalidad), "", FiscalizarTexto(TextoRemitoLinea1), FiscalizarTexto(TextoRemitoLinea2), "C"); } Res = Enviar(ComandoAEnviar); break; case Lbl.Impresion.ModelosFiscales.HasarTiquedora: case Lbl.Impresion.ModelosFiscales.HasarGenerico: if (Comprob.Cliente.Id != 999) { //Sólo envío comando SetCustomerData (HasarDocumentoSetDatosCliente) //si el cliente NO es consumidor final string ClienteSituacionHasar = ""; switch (Comprob.Cliente.SituacionTributaria.Id) { case 1: ClienteSituacionHasar = "C"; break; case 2: ClienteSituacionHasar = "I"; break; case 3: // No existente en los modelos SMH/P- 715F, SMH/P-PR5F, SMH/P-441F y SMH/P-451F ClienteSituacionHasar = "N"; break; case 4: // No existente en el modelo SMH/P-PR4F ClienteSituacionHasar = "M"; break; case 5: ClienteSituacionHasar = "E"; break; case 6: ClienteSituacionHasar = "A"; break; case 7: ClienteSituacionHasar = "T"; break; } string TipoDocumentoClienteHasar = " "; switch (ClienteTipoDoc) { case "CUIT": TipoDocumentoClienteHasar = "C"; break; case "CUIL": TipoDocumentoClienteHasar = "L"; break; case "LE": TipoDocumentoClienteHasar = "0"; break; case "LC": TipoDocumentoClienteHasar = "1"; break; case "DNI": TipoDocumentoClienteHasar = "2"; break; case "PP": TipoDocumentoClienteHasar = "3"; break; case "CI": TipoDocumentoClienteHasar = "4"; break; default: TipoDocumentoClienteHasar = " ";// Sin clasificador break; } string NombreClienteHasar = Comprob.Cliente.ToString(); // Comando SetCustomerData (Manual Comandos Hasar) ComandoAEnviar = new Comando(CodigosComandosFiscales.HasarDocumentoSetDatosCliente, FiscalizarTexto(NombreClienteHasar, 30), ClienteNumDoc, ClienteSituacionHasar, TipoDocumentoClienteHasar, FiscalizarTexto(Domicilio, 40)); Res = Enviar(ComandoAEnviar); } //Abrir documento string TipoDocumentoHasar = "B"; if (TipoDocumento == "D" && Letra == "A") TipoDocumentoHasar = "D"; //ND A else if (TipoDocumento == "D") TipoDocumentoHasar = "E"; //ND B Y C else if (TipoDocumento == "F" && Letra == "A") TipoDocumentoHasar = "A"; //Fac A else if (TipoDocumento == "F") TipoDocumentoHasar = "B"; //Fac B y C else if (TipoDocumento == "T") TipoDocumentoHasar = "T"; //Ticket if (Modelo == Lbl.Impresion.ModelosFiscales.HasarTiquedora) { string NombreFantasiaHasar = Lbl.Sys.Config.Empresa.Nombre.ToUpper(); int EspaciosParaCentrado = NombreFantasiaHasar.Length; int EspaciosAIncertar; Comando EstablecerTituloTiquet; if (NombreFantasiaHasar.Length <= 20) { if (NombreFantasiaHasar.Length >= 19) { // El caracter especial ô indica que la imprecion debe ser con doble ancho, en dicho caso La cantidad maxima de caracteres se reduce de 40 a 20 EstablecerTituloTiquet = new Comando(CodigosComandosFiscales.HasarDocumentoFiscalNombreFantasia, "2", 'ô' + NombreFantasiaHasar); Res = Enviar(EstablecerTituloTiquet); } if (NombreFantasiaHasar.Length < 19) { EspaciosParaCentrado = (20 - NombreFantasiaHasar.Length) / 2; EspaciosAIncertar = NombreFantasiaHasar.Length + EspaciosParaCentrado; NombreFantasiaHasar = NombreFantasiaHasar.PadLeft(EspaciosAIncertar, ' '); // El caracter especial ô indica que la imprecion debe ser con doble ancho, en dicho caso La cantidad maxima de caracteres se reduce de 40 a 20 EstablecerTituloTiquet = new Comando(CodigosComandosFiscales.HasarDocumentoFiscalNombreFantasia, "2", 'ô' + NombreFantasiaHasar); Res = Enviar(EstablecerTituloTiquet); } } else { EstablecerTituloTiquet = new Comando(CodigosComandosFiscales.HasarDocumentoFiscalNombreFantasia, "2", NombreFantasiaHasar); Res = Enviar(EstablecerTituloTiquet); } //N° de línea de encabezamiento (1-10) o cola (11-20) //0: borra encabezamiento y cola, -1: borra encabezamiento, -2: borra cola. Comando EstablecerEncabezadoCola = new Comando(CodigosComandosFiscales.HasarDocumentoEstablecerEncabezadoCola, "12", " Muchas gracias por su compra"); Res = Enviar(EstablecerEncabezadoCola); } if (Letra == "S" || Letra == "R") { // Para notas de Crédito primero tengo que acentar los datos del comprobante original y luego abrir el documento string ComprobanteOriginal = Comprob.ComprobanteOriginal.Nombre; string[] partes = ComprobanteOriginal.Split(new char[] { '-' }); ComprobanteOriginal = partes[1]; // El segundo parámetro corresponde al numero de línea donde se va a imprimir la información del comprobante original // 0: Borra ambas líneas Comando ComandoEnviar = new Comando(CodigosComandosFiscales.HasarDocumentoFiscalCargarComprobanteOriginal, "1", ComprobanteOriginal); Res = Enviar(ComandoEnviar); ComandoEnviar = new Comando(CodigosComandosFiscales.HasarDocumentoNoFiscalHomologadoAbrir, Letra, "T" ); Res = Enviar(ComandoEnviar); } else { // El segundo parámetro corresponde al numero de línea donde se va a imprimir la información del comprobante original // 0: Borra ambas líneas // Borro cualquier línea que haya quedado de una nota de crédito anterior Comando ComandoEnviar = new Comando(CodigosComandosFiscales.HasarDocumentoFiscalCargarComprobanteOriginal, "0", "1234"); Res = Enviar(ComandoEnviar); // Comando OpenFiscalReceipt (Manual de comandos Hasar) ComandoAEnviar = new Comando(CodigosComandosFiscales.HasarDocumentoFiscalAbrir, TipoDocumentoHasar, "T"); Res = Enviar(ComandoAEnviar); } break; } if (Res.Error != ErroresFiscales.Ok) { Res.Lugar = "DocumentoFiscalAbrir"; return Res; } // *** Imprimir Detalles foreach (Lbl.Comprobantes.DetalleArticulo Detalle in Comprob.Articulos) { string StrCodigo = Lfx.Workspace.Master.CurrentConfig.Productos.CodigoPredeterminado(); if (Detalle.Articulo != null) { if (StrCodigo == "id_articulo") StrCodigo = Detalle.Articulo.Id.ToString(); else StrCodigo = DataBase.FieldString("SELECT " + StrCodigo + " FROM articulos WHERE id_articulo=" + Detalle.Articulo.Id.ToString()); } if (StrCodigo.Length > 0) StrCodigo = "(" + StrCodigo + ") "; decimal Cantidad = Detalle.Cantidad; decimal Unitario = Detalle.UnitarioAImprimir; //Si es cantidad negativa, pongo precio negativo y cantidad positiva if (Cantidad < 0) { Cantidad = -Cantidad; Unitario = -Unitario; } string ItemNombre = Detalle.Nombre; string ParametroSumaResta; switch (Modelo) { case Lbl.Impresion.ModelosFiscales.EpsonTiquedora: ParametroSumaResta = "M"; if (Unitario < 0) ParametroSumaResta = "R"; ComandoAEnviar = new Comando(CodigosComandosFiscales.EpsonDocumentoFiscalItem, FiscalizarTexto(ItemNombre,18), FormatearNumeroEpson(Cantidad, 3).PadLeft(8, '0'), FormatearNumeroEpson(Math.Abs(Unitario), 2).PadLeft(9, '0'), "0000", ParametroSumaResta, "00001", "00000000", "", "", "", "0000", "000000000000000"); Res = Enviar(ComandoAEnviar); Res = Enviar(new Comando(CodigosComandosFiscales.EpsonDocumentoFiscalSubtotal, "P", "")); break; case Lbl.Impresion.ModelosFiscales.EpsonGenerico: case Lbl.Impresion.ModelosFiscales.Emulacion: ParametroSumaResta = "M"; if (Unitario < 0) ParametroSumaResta = "R"; ComandoAEnviar = new Comando(CodigosComandosFiscales.EpsonDocumentoFiscalItem, FiscalizarTexto(ItemNombre).PadRight(54).Substring(0, 54), FormatearNumeroEpson(Cantidad, 3).PadLeft(8, '0'), FormatearNumeroEpson(Math.Abs(Unitario), 2).PadLeft(9, '0'), "0000", ParametroSumaResta, "00001", "00000000", "", "", "", "0000", "000000000000000"); Res = Enviar(ComandoAEnviar); break; case Lbl.Impresion.ModelosFiscales.HasarTiquedora: case Lbl.Impresion.ModelosFiscales.HasarGenerico: if (Detalle.DatosSeguimiento != null && Detalle.DatosSeguimiento.Count > 0) { ComandoAEnviar = new Comando(CodigosComandosFiscales.HasarDocumentoFiscalTexto, FiscalizarTexto(Detalle.DatosSeguimiento.ToString(), 50), "0" ); Res = Enviar(ComandoAEnviar); if (Res.Error != ErroresFiscales.Ok) { Res.Lugar = "DocumentoFiscalText"; return Res; } } if (Unitario < 0) { ComandoAEnviar = new Comando(CodigosComandosFiscales.HasarDocumentoFiscalDescuentoGeneral, FiscalizarTexto(ItemNombre, 50), FormatearNumeroHasar(Math.Abs(Unitario), 2), "m", "0", "T"); } else { ComandoAEnviar = new Comando(CodigosComandosFiscales.HasarDocumentoFiscalItem, FiscalizarTexto(ItemNombre, 50), FormatearNumeroHasar(Cantidad, 2), FormatearNumeroHasar(Unitario, 2), "0.0", /* IVA */ "M", "0.0", /* Impuestos Interno s */ "0", /* Campo Display */ "B" /* Precio total o base */ ); } Res = Enviar(ComandoAEnviar); break; } if (Res.Error != ErroresFiscales.Ok) { Res.Lugar = "DocumentoFiscalItem"; return Res; } } // Calculo el total real, tomando en cuenta el redondeo y los decimales if (Comprob.Descuento > 0) { decimal MontoDescuento = Comprob.SubTotal * (Comprob.Descuento / 100); switch (Modelo) { case Lbl.Impresion.ModelosFiscales.EpsonTiquedora: case Lbl.Impresion.ModelosFiscales.EpsonGenerico: case Lbl.Impresion.ModelosFiscales.Emulacion: ComandoAEnviar = new Comando(CodigosComandosFiscales.EpsonDocumentoFiscalPagosYDescuentos, "Descuento " + Lfx.Types.Formatting.FormatCurrencyForPrint(Comprob.Descuento, 2) + "%", FormatearNumeroEpson(MontoDescuento, 2).PadLeft(12, '0'), "D"); Res = Enviar(ComandoAEnviar); break; case Lbl.Impresion.ModelosFiscales.HasarTiquedora: case Lbl.Impresion.ModelosFiscales.HasarGenerico: ComandoAEnviar = new Comando(CodigosComandosFiscales.HasarDocumentoFiscalDescuentoGeneral, "Descuento " + Lfx.Types.Formatting.FormatCurrencyForPrint(Comprob.Descuento, 2) + "%", FormatearNumeroHasar(MontoDescuento, 2), "m", "0", "T"); Res = Enviar(ComandoAEnviar); break; } if (Res.Error != ErroresFiscales.Ok) { Res.Lugar = "DocumentoFiscalPagosYDescuentos:Descuento"; return Res; } } if (Math.Abs(Comprob.TotalSinRedondeo - Comprob.Total) >= 0.001m) { switch (Modelo) { case Lbl.Impresion.ModelosFiscales.EpsonTiquedora: case Lbl.Impresion.ModelosFiscales.EpsonGenerico: case Lbl.Impresion.ModelosFiscales.Emulacion: ComandoAEnviar = new Comando(CodigosComandosFiscales.EpsonDocumentoFiscalPagosYDescuentos, "Ajustes por Redondeo", FormatearNumeroEpson((Comprob.Total - Comprob.TotalSinRedondeo), 2).PadLeft(12, '0'), "D"); Res = Enviar(ComandoAEnviar); break; case Lbl.Impresion.ModelosFiscales.HasarTiquedora: case Lbl.Impresion.ModelosFiscales.HasarGenerico: ComandoAEnviar = new Comando(CodigosComandosFiscales.HasarDocumentoFiscalDescuentoGeneral, "Ajustes por Redondeo", FormatearNumeroHasar((Comprob.Total - Comprob.TotalSinRedondeo), 2), "m", "0", "T"); Res = Enviar(ComandoAEnviar); break; } if (Res.Error != ErroresFiscales.Ok) { // Error, pero continúo // Res.Lugar = "DocumentoFiscalPagosYDescuentos:Redondeo" // If Not (OFormFiscalEstado Is Nothing) Then OFormFiscalEstado.Listo() // Return Res } } //Recargos if (Comprob.Recargo > 0) { switch (Modelo) { case Lbl.Impresion.ModelosFiscales.EpsonTiquedora: case Lbl.Impresion.ModelosFiscales.EpsonGenerico: case Lbl.Impresion.ModelosFiscales.Emulacion: ComandoAEnviar = new Comando(CodigosComandosFiscales.EpsonDocumentoFiscalPagosYDescuentos, "Recargo " + Lfx.Types.Formatting.FormatCurrencyForPrint(Comprob.Recargo, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesCosto) + "%", FormatearNumeroEpson(Comprob.SubTotal * (Comprob.Recargo / 100), 2).PadLeft(12, '0'), "R"); Res = Enviar(ComandoAEnviar); break; case Lbl.Impresion.ModelosFiscales.HasarTiquedora: case Lbl.Impresion.ModelosFiscales.HasarGenerico: ComandoAEnviar = new Comando(CodigosComandosFiscales.HasarDocumentoFiscalDevolucionesYRecargos, "Recargo " + Lfx.Types.Formatting.FormatCurrencyForPrint(Comprob.Recargo, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesCosto) + "%", FormatearNumeroHasar(Comprob.SubTotal * (Comprob.Recargo / 100), 2).PadLeft(10, '0'), "M", "00000000000", "0", "T", "B"); Res = Enviar(ComandoAEnviar); break; } if (Res.Error != ErroresFiscales.Ok) { Res.Lugar = "DocumentoFiscalPagosYDescuentos:Interes"; return Res; } } // Pago switch (Modelo) { case Lbl.Impresion.ModelosFiscales.EpsonTiquedora: case Lbl.Impresion.ModelosFiscales.EpsonGenerico: case Lbl.Impresion.ModelosFiscales.Emulacion: ComandoAEnviar = new Comando(CodigosComandosFiscales.EpsonDocumentoFiscalPagosYDescuentos, FiscalizarTexto(Comprob.FormaDePago.ToString(), 50), FormatearNumeroEpson(Comprob.Total, 2).PadLeft(12, '0'), "T"); Res = Enviar(ComandoAEnviar); break; case Lbl.Impresion.ModelosFiscales.HasarTiquedora: case Lbl.Impresion.ModelosFiscales.HasarGenerico: ComandoAEnviar = new Comando(CodigosComandosFiscales.HasarDocumentoFiscalPago, FiscalizarTexto(Comprob.FormaDePago.ToString(), 50), FormatearNumeroHasar(Comprob.Total, 2), "T", "0"); Res = Enviar(ComandoAEnviar); break; } if (Res.Error != ErroresFiscales.Ok) { Res.Lugar = "DocumentoFiscalPagosYDescuentos:Pago"; return Res; } // *** Cerrar Documento switch (Modelo) { case Lbl.Impresion.ModelosFiscales.EpsonTiquedora: Res = Enviar(new Comando(CodigosComandosFiscales.EpsonDocumentoFiscalCerrar, TipoDocumento, Letra, "")); break; case Lbl.Impresion.ModelosFiscales.EpsonGenerico: case Lbl.Impresion.ModelosFiscales.Emulacion: Res = Enviar(new Comando(CodigosComandosFiscales.EpsonDocumentoFiscalCerrar, TipoDocumento, Letra, "Final")); break; case Lbl.Impresion.ModelosFiscales.HasarTiquedora: case Lbl.Impresion.ModelosFiscales.HasarGenerico: if (Letra == "S" || Letra == "R") { // Si es nota de credito cierro dicha nota Res = Enviar(new Comando(CodigosComandosFiscales.HasarDocumentoNoFiscalHomologadoCerrar, "1", "")); } else { // Comando CloseFiscalReceipt (Manual de comandos hasar) Res = Enviar(new Comando(CodigosComandosFiscales.HasarDocumentoFiscalCerrar, "1")); } break; } if (Res.Error != ErroresFiscales.Ok) { Res.Lugar = "DocumentoFiscalCerrar"; return Res; } else { if (NotifHandler != null) NotifHandler(this, new ImpresoraEventArgs("Asentando el movimiento")); IDbTransaction Trans = null; try { Trans = Comprob.Connection.BeginTransaction(IsolationLevel.Serializable); // Marco la factura como impresa y numerada Comprob.Numerar(Res.NumeroComprobante, true); // Mover stock si corresponde Comprob.MoverExistencias(false); // Asentar pagos si corresponde Comprob.AsentarPago(false); Trans.Commit(); } catch (Exception ex) { Res = new Respuesta(ErroresFiscales.Error); Res.Mensaje = ex.ToString(); if (Trans != null) Trans.Rollback(); } if (NotifHandler != null) NotifHandler(this, new ImpresoraEventArgs("Se imprimió el comprobante")); return Res; } }
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(); }
public override Lfx.Types.OperationResult Ok() { int PV = EntradaPV.ValueInt; int Desde = EntradaDesde.ValueInt; int Hasta = EntradaHasta.ValueInt; int Cantidad = Hasta - Desde + 1; Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("Una vez anulados, los comprobantes deberán ser archivados en todas sus copias y no podrán ser rehabilitados ni reutilizados.", "¿Está seguro de que desea anular " + Cantidad.ToString() + " comprobantes?"); Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo; if (Pregunta.ShowDialog() == DialogResult.OK) { bool AnularPagos = EntradaAnularPagos.ValueInt != 0; int m_Id = 0; string IncluyeTipos = ""; switch (EntradaTipo.TextKey) { case "A": IncluyeTipos = "'FA', 'NCA', 'NDA'"; break; case "B": IncluyeTipos = "'FB', 'NCB', 'NDB'"; break; case "C": IncluyeTipos = "'FC', 'NCC', 'NDC'"; break; case "E": IncluyeTipos = "'FE', 'NCE', 'NDE'"; break; case "M": IncluyeTipos = "'FM', 'NCM', 'NDM'"; break; case "T": IncluyeTipos = "'T'"; break; default: IncluyeTipos = "'" + EntradaTipo.TextKey + "'"; break; } Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Anulando comprobantes", "Se están anulando los comprobantes seleccionados."); Progreso.Cancelable = true; Progreso.Max = Cantidad; Progreso.Begin(); IDbTransaction Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable); for (int Numero = Desde; Numero <= Hasta; Numero++) { int IdFactura = Connection.FieldInt("SELECT id_comprob FROM comprob WHERE impresa=1 AND tipo_fac IN (" + IncluyeTipos + ") AND pv=" + PV.ToString() + " AND numero=" + Numero.ToString()); if (IdFactura == 0) { // Es una factura que todava no existe // Tengo que crear la factura y anularla qGen.Insert InsertarComprob = new qGen.Insert("comprob"); InsertarComprob.Fields.AddWithValue("tipo_fac", "F" + EntradaTipo.TextKey); InsertarComprob.Fields.AddWithValue("id_formapago", 3); InsertarComprob.Fields.AddWithValue("id_sucursal", Lfx.Workspace.Master.CurrentConfig.Empresa.SucursalActual); InsertarComprob.Fields.AddWithValue("pv", Lfx.Types.Parsing.ParseInt(EntradaPV.Text)); InsertarComprob.Fields.AddWithValue("fecha", qGen.SqlFunctions.Now); InsertarComprob.Fields.AddWithValue("id_vendedor", Lbl.Sys.Config.Actual.UsuarioConectado.Id); InsertarComprob.Fields.AddWithValue("id_cliente", Lbl.Sys.Config.Actual.UsuarioConectado.Id); InsertarComprob.Fields.AddWithValue("obs", "Comprobante anulado antes de ser impreso."); InsertarComprob.Fields.AddWithValue("impresa", 1); InsertarComprob.Fields.AddWithValue("anulada", 1); Connection.Execute(InsertarComprob); m_Id = Connection.FieldInt("SELECT LAST_INSERT_ID()"); Lbl.Comprobantes.ComprobanteConArticulos NuevoComprob = new Lbl.Comprobantes.ComprobanteConArticulos(this.Connection, m_Id); NuevoComprob.Numerar(true); } else { Lbl.Comprobantes.ComprobanteConArticulos Fac = new Lbl.Comprobantes.ComprobanteConArticulos(Connection, IdFactura); if (Fac.Anulado == false) Fac.Anular(AnularPagos); } Progreso.Advance(1); if (Progreso.Cancelar) break; } Progreso.End(); if (Progreso.Cancelar) { Trans.Rollback(); Lfx.Workspace.Master.RunTime.Toast("La operación fue cancelada.", "Aviso"); } else { Trans.Commit(); ProximosNumeros.Clear(); Lui.Forms.MessageBox.Show("Se anularon los comprobantes seleccionados. Recuerde archivar ambas copias.", "Aviso"); } EntradaDesde.ValueInt = 0; EntradaHasta.ValueInt = 0; EntradaDesde.Focus(); return base.Ok(); } else { return new Lfx.Types.FailureOperationResult("La operación fue cancelada."); } }
private void MostrarVistaPrevia() { int PV = EntradaPV.ValueInt; int Desde = EntradaDesde.ValueInt; if (EntradaHasta.ValueInt < Desde && this.ActiveControl != EntradaHasta) EntradaHasta.ValueInt = Desde; int Hasta = EntradaHasta.ValueInt; int Cantidad = Hasta - Desde + 1; string[] IncluyeTipos; switch (EntradaTipo.TextKey) { case "A": IncluyeTipos = new string[] { "FA", "NCA", "NDA" }; break; case "B": IncluyeTipos = new string[] { "FB", "NCB", "NDB" }; break; case "C": IncluyeTipos = new string[] { "FC", "NCC", "NDC" }; break; case "E": IncluyeTipos = new string[] { "FE", "NCE", "NDE" }; break; case "M": IncluyeTipos = new string[] { "FM", "NCM", "NDM" }; break; case "T": IncluyeTipos = new string[] { "T" }; break; default: IncluyeTipos = new string[] { EntradaTipo.TextKey }; break; } qGen.Where WhereAnular = new qGen.Where(); WhereAnular.AddWithValue("impresa", qGen.ComparisonOperators.NotEqual, 0); WhereAnular.AddWithValue("tipo_fac", qGen.ComparisonOperators.In, IncluyeTipos); WhereAnular.AddWithValue("pv", PV); if (ProximosNumeros.ContainsKey(PV) == false) { qGen.Select SelProxNum = new qGen.Select("comprob"); SelProxNum.Fields = "MAX(numero)"; SelProxNum.WhereClause = WhereAnular; ProximosNumeros[PV] = this.Connection.FieldInt(SelProxNum) + 1; } if (PV <= 0 || Desde <= 0 || Cantidad <= 0) { EtiquetaAviso.Text = "El rango seleccionado no es válido."; ComprobanteVistaPrevia.Visible = false; ListadoFacturas.Visible = false; OkButton.Visible = false; return; } if (Desde > ProximosNumeros[PV]) { EtiquetaAviso.Text = "No se puede anular el rango seleccionado porque todavía no se utilizaron los comprobantes desde el " + ProximosNumeros[PV].ToString() + " al " + (Desde - 1).ToString(); ComprobanteVistaPrevia.Visible = false; ListadoFacturas.Visible = false; OkButton.Visible = false; return; } ComprobanteVistaPrevia.Visible = Cantidad == 1; ListadoFacturas.Visible = Cantidad > 1; if (Cantidad == 1) { qGen.Select SelDesde = new qGen.Select("comprob"); SelDesde.Fields = "id_comprob"; SelDesde.WhereClause = WhereAnular.Clone(); SelDesde.WhereClause.AddWithValue("numero", Desde); int IdFactura = this.Connection.FieldInt(SelDesde); Lbl.Comprobantes.ComprobanteConArticulos FacturaInicial = null; if (IdFactura > 0) FacturaInicial = new Lbl.Comprobantes.ComprobanteConArticulos(this.Connection, IdFactura); if (FacturaInicial != null && FacturaInicial.Existe) { ComprobanteVistaPrevia.Elemento = FacturaInicial; ComprobanteVistaPrevia.ActualizarControl(); ComprobanteVistaPrevia.TemporaryReadOnly = true; ComprobanteVistaPrevia.Visible = true; if (FacturaInicial.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; if (FacturaInicial.FormaDePago.Tipo == Lbl.Pagos.TiposFormasDePago.CuentaCorriente) { EntradaAnularPagos.TextKey = "1"; } else { EntradaAnularPagos.TextKey = "0"; } } } else { ComprobanteVistaPrevia.Visible = false; if (Desde == ProximosNumeros[PV]) { EtiquetaAviso.Text = "El comprobante " + EntradaTipo.TextKey + " " + PV.ToString("0000") + "-" + Desde.ToString("00000000") + " aun no fue impreso, pero es el próximo en el talonario. Si lo anula, el sistema salteará dicho comprobante."; EntradaAnularPagos.TextKey = "0"; OkButton.Visible = true; } else { EtiquetaAviso.Text = "El comprobante " + EntradaTipo.TextKey + " " + PV.ToString("0000") + "-" + Lfx.Types.Parsing.ParseInt(EntradaDesde.Text).ToString("00000000") + " aun no fue impreso y no puede anularse."; EntradaAnularPagos.TextKey = "0"; OkButton.Visible = false; } } } else if (Cantidad > 1) { EntradaAnularPagos.TextKey = "1"; qGen.Select SelComprobs = new qGen.Select("comprob"); SelComprobs.Fields = "*"; SelComprobs.WhereClause = WhereAnular.Clone(); SelComprobs.WhereClause.AddWithValue("numero", Desde, Hasta); System.Data.DataTable TablaFacturas = this.Connection.Select(SelComprobs); Lbl.Comprobantes.ColeccionComprobanteConArticulos Facturas = new Lbl.Comprobantes.ColeccionComprobanteConArticulos(this.Connection, TablaFacturas); ListadoFacturas.BeginUpdate(); ListadoFacturas.Items.Clear(); foreach (Lbl.Comprobantes.ComprobanteConArticulos Fac in Facturas) { ListViewItem Itm = ListadoFacturas.Items.Add(Fac.Tipo.ToString()); Itm.SubItems.Add(Fac.PV.ToString("0000") + "-" + Fac.Numero.ToString("00000000")); Itm.SubItems.Add(Fac.Fecha.ToString(Lfx.Types.Formatting.DateTime.ShortDatePattern)); Itm.SubItems.Add(Fac.Cliente.ToString()); Itm.SubItems.Add(Lfx.Types.Formatting.FormatCurrency(Fac.Total)); } ListadoFacturas.EndUpdate(); EtiquetaAviso.Text = "Se van a anular " + Cantidad.ToString() + " comprobantes, incluyendo los que se detallan a continuación."; this.OkButton.Visible = true; } else { EtiquetaAviso.Text = "Debe seleccionar un rango que inlcuya al menos 1 comprobante."; ListadoFacturas.Items.Clear(); this.OkButton.Visible = false; } }
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_concepto") > 0) this.Concepto = new Cajas.Concepto(this.Connection, this.GetFieldValue<int>("id_concepto")); else this.Concepto = null; if (this.GetFieldValue<int>("id_chequera") > 0) this.Chequera = new Bancos.Chequera(this.Connection, this.GetFieldValue<int>("id_chequera")); else this.Chequera = null; if (this.GetFieldValue<int>("id_cliente") > 0) this.Cliente = new Personas.Persona(this.Connection, this.GetFieldValue<int>("id_cliente")); else this.Cliente = null; if (this.GetFieldValue<int>("id_comprob") > 0) this.Factura = new Comprobantes.ComprobanteConArticulos(this.Connection, this.GetFieldValue<int>("id_comprob")); else this.Factura = null; } base.OnLoad(); }
private static object ExecImprimir(string comando) { string SubComandoImprimir = Lfx.Types.Strings.GetNextToken(ref comando, " ").Trim(); switch (SubComandoImprimir.ToUpperInvariant()) { case "COMPROBANTE": case "COMPROB": int IdComprobante = Lfx.Types.Parsing.ParseInt(Lfx.Types.Strings.GetNextToken(ref comando, " ")); Lfx.Types.OperationResult ResultadoImpresion; using (Lfx.Data.Connection DataBaseImprimir = Lfx.Workspace.Master.GetNewConnection("Imprimir comprobante")) using (System.Data.IDbTransaction Trans = DataBaseImprimir.BeginTransaction()) { Lbl.Comprobantes.ComprobanteConArticulos Comprob = new Lbl.Comprobantes.ComprobanteConArticulos(DataBaseImprimir, IdComprobante); Lazaro.Impresion.Comprobantes.ImpresorComprobanteConArticulos Impresor = new Impresion.Comprobantes.ImpresorComprobanteConArticulos(Comprob, Trans); ResultadoImpresion = Impresor.Imprimir(); if (ResultadoImpresion.Success) Trans.Commit(); else Trans.Rollback(); } return ResultadoImpresion; default: int itemId = Lfx.Types.Parsing.ParseInt(Lfx.Types.Strings.GetNextToken(ref comando, " ").Trim()); Type TipoElem = Lbl.Instanciador.InferirTipo(SubComandoImprimir); if (TipoElem != null && itemId > 0) { using (Lfx.Data.Connection DbImprimir = Lfx.Workspace.Master.GetNewConnection("Imprimir " + TipoElem.ToString() + " " + itemId.ToString())) { Lbl.IElementoDeDatos Elem = Lbl.Instanciador.Instanciar(TipoElem, DbImprimir, itemId); Lfx.Types.OperationResult Res; using (System.Data.IDbTransaction Trans = DbImprimir.BeginTransaction()) { Lazaro.Impresion.ImpresorElemento Impresor = Lazaro.Impresion.Instanciador.InstanciarImpresor(Elem, Trans); string ImprimirEn = Lfx.Types.Strings.GetNextToken(ref comando, " ").Trim().ToUpperInvariant(); if (ImprimirEn == "EN") { // El nombre de la impresora es lo que resta del comando // No lo puedo separar con GetNextToken porque puede contener espacios string NombreImpresora = comando; Impresor.Impresora = Lbl.Impresion.Impresora.InstanciarImpresoraLocal(DbImprimir, NombreImpresora); } Res = Impresor.Imprimir(); if (Res.Success) { Trans.Commit(); } else { Trans.Rollback(); } } return Res; } } break; } return null; }