public Venta(ClaveSeguridad.Seguridad seguridad) { _nuevoConoMonetario = 0.0m; _seguridad = seguridad; _ctrCliente = new CtrCliente(); _pendiente = new AbrirPendiente.Pendiente(_seguridad); _ctrItem = new CtrItem(); _ctrLista = new CtrlLista(); _ctrBuscar = new CtrlBuscar(_ctrLista); _ctrConsultar = new CtrConsulta(_ctrBuscar); _ctrListaItem = new CtrListaItem(_ctrItem); _ctrPago = new CtrPago(_seguridad, _ctrCliente); _ticketFactura = new Ticket(); _ticketFactura.setModo(Ticket.EnumModoTicket.Modo80mm); if (Sistema.ImpresoraTicket == Sistema.EnumModoRolloTicket.Pequeno) { _ticketFactura.setModo(Ticket.EnumModoTicket.Modo58mm); } _series = new series(); _permitirBusquedaPorDescripcion = false; _modoOperacionPos = Enumerados.EnumModoOperacionPos.Detal; _modoFuncion = Enumerados.EnumModoFuncion.Facturacion; _montoDivisa = 0.0m; _activarRepesaje = false; _limiteRepesajeInf = 0.0m; _limiteRepesajeSup = 0.0m; }
public void ActivarDevolucion(Enumerados.EnumModoFuncion modo = Enumerados.EnumModoFuncion.Facturacion) { _modoFuncion = modo; if (CargarData()) { if (frm == null) { frm = new Devolucion.DevolucionFrm(); frm.setControlador(this); } frm.ShowDialog(); } }
public void AnularVenta() { var seguir = true; switch (_permisos.AnularVenta.RequiereClave) { case OOB.LibVenta.PosOffline.Permiso.Pos.Permiso.EnumAcceso.SinAcceso: seguir = false; break; case OOB.LibVenta.PosOffline.Permiso.Pos.Permiso.EnumAcceso.PedirClave: seguir = _seguridad.SolicitarClave(); break; } if (seguir) { if (_ctrItem.AnularVenta()) { _modoFuncion = Enumerados.EnumModoFuncion.Facturacion; _ctrCliente.Limpiar(); } } }
private void GuardarFactura(Pago.Pago pago) { var _dsctoGlobalPorct = pago.DescuentoPorct; var _dsctoGlobalMonto = pago.Descuento; var _cargoGlobalMonto = 0.0m; var _cargoGlobalPorct = 0.0m; var _montoDivisa = pago.MontoPagarDivisa; var _montoTotal = pago.MontoPagar; var _cambioDar = pago.MontoCambioDar_MonedaNacional; var _montoRecibido = pago.MontoRecibido; var _isCredito = pago.IsCredito ? "S" : "N"; var _saldoPendiente = pago.IsCredito ? pago.MontoPagar: 0.0m; var _tipoDocumento = OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoDocumento.Factura; var _signo = 1; var _aplica = ""; var _serie = _series.ParaFactura; var _control = _series.ControlParaFactura; var _correlativo = _series.CorrelativoParaFactura + 1; var _condicionPago = pago.IsCredito ? "CREDITO" : "CONTADO"; var _documentoNombre = "FACTURA"; var _autoConceptoMv = _movConceptoInv.Venta.Auto; var _codigoConceptoMv = _movConceptoInv.Venta.Codigo; var _nombreConceptoMv = _movConceptoInv.Venta.Nombre; if (_modoFuncion == Enumerados.EnumModoFuncion.NotaCredito) { _cambioDar = 0.0m; _montoRecibido = 0.0m; _aplica = _documentoVenta.Documento; _tipoDocumento = OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoDocumento.NotaCredito; _signo = -1; _serie = _series.ParaNotaCredito; _control = _series.ControlParaNotaCredito; _correlativo = _series.CorrelativoParaNtCredito + 1; _documentoNombre = "NOTA CREDITO"; _autoConceptoMv = _movConceptoInv.DevVenta.Auto; _codigoConceptoMv = _movConceptoInv.DevVenta.Codigo; _nombreConceptoMv = _movConceptoInv.DevVenta.Nombre; } _ctrItem.setDescuentoGlobal(_dsctoGlobalPorct); _ctrItem.setCargoGlobal(_cargoGlobalPorct); var rt1 = Sistema.MyData2.Jornada_Activa(); if (rt1.Result == OOB.Enumerados.EnumResult.isError) { Helpers.Msg.Error(rt1.Mensaje); return; } if (rt1.Entidad == -1) { var msg = "PROBLEMA AL GRABAR FACTURA" + Environment.NewLine + "DEJA LA FACTURA EN PENDIENTE" + Environment.NewLine + "SAL DEL SISTEMA (POS) Y VUELVE A INTENTAR" + Environment.NewLine + "AL PARECER HABIA OTRA INSTANCIA DEL SISTEMA ABIERTA"; Helpers.Msg.Error(msg); return; } var rt2 = Sistema.MyData2.Operador_Activo(); if (rt2.Result == OOB.Enumerados.EnumResult.isError) { Helpers.Msg.Error(rt2.Mensaje); return; } if (rt1.Entidad == -1) { var msg = "PROBLEMA AL GRABAR FACTURA" + Environment.NewLine + "DEJA LA FACTURA EN PENDIENTE" + Environment.NewLine + "SAL DEL SISTEMA (POS) Y VUELVE A INTENTAR" + Environment.NewLine + "AL PARECER HABIA OTRA INSTANCIA DEL SISTEMA ABIERTA"; Helpers.Msg.Error(msg); return; } var ficha = new OOB.LibVenta.PosOffline.VentaDocumento.Agregar() { //IdJornada =Sistema.MyJornada.Id, //IdOperador=Sistema.MyOperador.Id, IdJornada = rt1.Entidad, IdOperador = rt2.Entidad, Aplica = _aplica, AutoUsuario = _usuario.Auto, ClienteId = _ctrCliente.Ficha.Id, ClienteCiRif = _ctrCliente.Ficha.CiRif, ClienteDirFiscal = _ctrCliente.Ficha.DirFiscal, ClienteNombreRazonSocial = _ctrCliente.Ficha.NombreRazaonSocial, ClienteTelefono = _ctrCliente.Ficha.Telefono, Control = _control, Documento = _correlativo.ToString().Trim().PadLeft(10, '0'), Estacion = Environment.MachineName, FactorCambio = TasaCambio, IsDocumentoActivo = true, MontoBase = _ctrItem.MontoBase, MontoBase_1 = _ctrItem.MontoBaseX("1"), MontoBase_2 = _ctrItem.MontoBaseX("2"), MontoBase_3 = _ctrItem.MontoBaseX("3"), MontoCargo_1 = _cargoGlobalMonto, MontoCostoVenta = _ctrItem.MontoCostoVenta, MontoDescuento_1 = _dsctoGlobalMonto, MontoDescuento_2 = 0.0m, MontoDivisa = _montoDivisa, MontoExento = _ctrItem.MontoExento, MontoImpuesto = _ctrItem.MontoImpuesto, MontoIva_1 = _ctrItem.MontoIvaX("1"), MontoIva_2 = _ctrItem.MontoIvaX("2"), MontoIva_3 = _ctrItem.MontoIvaX("3"), MontoSubTotal = _ctrItem.MontoTotal, MontoSubTotalImpuesto = _ctrItem.MontoImpuesto, MontoSubTotalNeto = _ctrItem.SubTotalNeto, MontoTotal = _montoTotal, MontoUtilidad = _ctrItem.UtilidadNetaMonto, MontoVentaNeta = _ctrItem.MontoVentaNeto, PorcCargo_1 = _cargoGlobalPorct, PorcDescuento_1 = _dsctoGlobalPorct, PorcDescuento_2 = 0.0m, PorcUtilidad = _ctrItem.UtilidadNetaPorct, Renglones = _ctrItem.Renglones, Serie = _serie, SignoDocumento = _signo, TasaIva_1 = _fiscal.Tasa1, TasaIva_2 = _fiscal.Tasa2, TasaIva_3 = _fiscal.Tasa3, TipoDocumento = _tipoDocumento, UsuarioCodigo = _usuario.Codigo, UsuarioDescripcion = _usuario.Descripcion, CodioSucursal = CodigoSucursal, PrefijoSucursal = PrefijoSucursal, AutoDeposito = _deposito.Auto, CodigoDeposito = _deposito.Codigo, DescripcionDeposito = _deposito.Descripcion, AutoVendedor = _vendedor.Auto, CodigoVendedor = _vendedor.Codigo, NombreVendedor = _vendedor.Nombre, AutoCobrador = _cobrador.Auto, CodigoCobrador = _cobrador.Codigo, NombreCobrador = _cobrador.Nombre, AutoTransporte = _transporte.Auto, CodigoTransporte = _transporte.Codigo, NombreTransporte = _transporte.Nombre, MontoRecibido = _montoRecibido, CambioDar = _cambioDar, IsCredito = _isCredito, Tarifa = TarifaPrecio, SaldoPendiente = _saldoPendiente, AutoConceptoMov = _autoConceptoMv, CodigoConceptoMov = _codigoConceptoMv, NombreConceptoMov = _nombreConceptoMv, }; //PARA EL TICKET _ticketFactura.Cliente.Limpiar(); _ticketFactura.Cliente.cirif = _ctrCliente.Ficha.CiRif; _ticketFactura.Cliente.nombre_1 = _ctrCliente.Ficha.NombreRazaonSocial; _ticketFactura.Cliente.dirFiscal_1 = _ctrCliente.Ficha.DirFiscal; _ticketFactura.Cliente.telefono_1 = _ctrCliente.Ficha.Telefono; _ticketFactura.Cliente.condicionpago = _condicionPago; _ticketFactura.Cliente.estacion = Environment.MachineName; _ticketFactura.Cliente.usuario = Sistema.Usuario.Descripcion; var tot = Math.Round(ficha.MontoTotal, 2, MidpointRounding.AwayFromZero); var stot = Math.Round(ficha.MontoSubTotal, 2, MidpointRounding.AwayFromZero); var sbtot = Math.Round(_ctrItem.SubTotal, 2, MidpointRounding.AwayFromZero); _ticketFactura.Documento.Limpiar(); _ticketFactura.Documento.nombre = _documentoNombre; _ticketFactura.Documento.aplicaA = _aplica; _ticketFactura.Documento.numero = ficha.Documento; _ticketFactura.Documento.fecha = DateTime.Now.Date.ToShortDateString(); _ticketFactura.Documento.hora = DateTime.Now.ToShortTimeString(); _ticketFactura.Documento.subtotalNeto = "Bs " + sbtot.ToString("n2"); _ticketFactura.Documento.subtotal = "Bs " + stot.ToString("n2"); _ticketFactura.Documento.total = "Bs " + tot.ToString("n2"); _ticketFactura.Documento.cambio = "Bs " + ficha.CambioDar.ToString("n2"); _ticketFactura.Documento.descuentoMonto = "Bs " + ficha.MontoDescuento_1.ToString("n2"); _ticketFactura.Documento.descuentoPorct = ficha.PorcDescuento_1.ToString("n2").Trim() + "%"; _ticketFactura.Documento.cargoMonto = "Bs " + ficha.MontoCargo_1.ToString("n2"); _ticketFactura.Documento.cargoPorct = ficha.PorcCargo_1.ToString("n2").Trim() + "%"; _ticketFactura.Documento.HayDescuento = ficha.PorcDescuento_1 > 0.0m; _ticketFactura.Documento.HayCargo = ficha.PorcCargo_1 > 0.0m; var fichaItemsEliminar = new List <OOB.LibVenta.PosOffline.VentaDocumento.AgregarItemEliminar>(); var fichaItems = new List <OOB.LibVenta.PosOffline.VentaDocumento.AgregarItem>(); foreach (var rg in _ctrItem.Items) { if (_modoFuncion == Enumerados.EnumModoFuncion.Facturacion) { var nrEliminar = new OOB.LibVenta.PosOffline.VentaDocumento.AgregarItemEliminar() { IdEliminar = rg.Id, }; fichaItemsEliminar.Add(nrEliminar); } var nr = new OOB.LibVenta.PosOffline.VentaDocumento.AgregarItem() { AutoDepartamento = rg.AutoDepartamento, AutoGrupo = rg.AutoGrupo, AutoProducto = rg.AutoId, AutoSubGrupo = rg.AutoSubGrupo, AutoTasa = rg.AutoTasa, Cantidad = rg.Cantidad, CantidadUnd = rg.CantidadUnd, Categoria = rg.Categoria, CodigoPrd = rg.CodigoPrd, CostoCompraUnd = rg.CostoUnd, CostoPromedioUnd = rg.CostoPromUnd, CostoVenta = rg.CostoVenta, Decimales = rg.Decimales, DiasEmpaqueGarantia = rg.DiasEmpaqueGarantia, EmpaqueCodigo = rg.EmpaqueCodigo, EmpaqueContenido = rg.EmpaqueContenido, EmpaqueDescripcion = rg.EmpaqueDescripcion, MontoDscto_1 = 0.0m, MontoDscto_2 = 0.0m, MontoDscto_3 = 0.0m, MontoIva = rg.MontoIva, MontoUtilidad = rg.UtilidadNetaMonto, NombrePrd = rg.NombrePrd, Notas = "", PorcDscto_1 = 0.0m, PorcDscto_2 = 0.0m, PorcDscto_3 = 0.0m, PorctUtilidad = rg.UtilidadNetaPorct, PrecioSugerido = rg.PrecioSugerido, PrecioNeto = rg.PrecioNeto, PrecioItem = rg.PrecioItem, PrecioFinal = rg.PrecioFinalNeto, PrecioUnd = rg.PrecioFinalNeto, TarifaPrecio = rg.TarifaPrecio, TasaIva = rg.TasaIva, Total = rg.Total, TotalNeto = rg.TotalNeto, TotalDescuento = rg.TotalDescuentoItem, EsPesado = rg.EsPesado, TipoIva = rg.TipoIva, CostoCompra = rg.CostoCompra, CostoPromedio = rg.CostoPromedio, }; fichaItems.Add(nr); //PARA EL TICKET var it = new Ticket.DatosDocumento.Item() { cantidad = nr.Cantidad, precio = Math.Round(rg.PrecioFull, 2, MidpointRounding.AwayFromZero), isExento = rg.EsExento, isPesado = nr.EsPesado, descripcion = nr.NombrePrd, importe = Math.Round(rg.Total, 2, MidpointRounding.AwayFromZero), contenido = rg.EmpaqueContenido, empaque = rg.EmpaqueDescripcion, }; _ticketFactura.Documento.Items.Add(it); } ficha.Items = fichaItems; ficha.ItemsEliminar = fichaItemsEliminar; var metodosPago = pago._detalle.Where(w => w.Monto > 0).Select(s => { OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoMedioPago _tipoMedioPago = OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoMedioPago.SinDefinir; OOB.LibVenta.PosOffline.Configuracion.MedioCobro.Medio medio = null; switch (s.Modo) { case Pago.Enumerados.ModoPago.Efectivo: medio = _medioCobro.Efectivo; _tipoMedioPago = OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoMedioPago.Efectivo; break; case Pago.Enumerados.ModoPago.Divisa: medio = _medioCobro.Divisa; _tipoMedioPago = OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoMedioPago.Divisa; break; case Pago.Enumerados.ModoPago.Electronico: if (s.Id == 4) { medio = _medioCobro.Otro; _tipoMedioPago = OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoMedioPago.Otros; break; } else { medio = _medioCobro.Electronico; _tipoMedioPago = OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoMedioPago.Electronico; break; } case Pago.Enumerados.ModoPago.Otro: medio = _medioCobro.Otro; _tipoMedioPago = OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoMedioPago.Otros; break; } var nr = new OOB.LibVenta.PosOffline.VentaDocumento.AgregarMetodoPago() { TipoMedioPago = _tipoMedioPago, autoMedioPago = medio.Auto, codigoMedioPago = medio.Codigo, descripcionMedioPago = medio.Descripcion, Importe = s.Importe, MontoRecibido = s.MontoRecibido, Tasa = s.Tasa, Lote = s.Lote, Referencia = s.Referencia, }; return(nr); }).ToList(); ficha.MetodosPago = metodosPago; //PARA EL TICKET foreach (var fmp in metodosPago) { if (fmp.Tasa > 1) { var m = fmp.MontoRecibido * fmp.Tasa; var itP = new Ticket.DatosDocumento.MedioPago() { descripcion = "Efectivo ($" + fmp.MontoRecibido.ToString("N0") + ")", monto = "Bs " + m.ToString("n2"), }; _ticketFactura.Documento.MediosPago.Add(itP); } else { var itP = new Ticket.DatosDocumento.MedioPago() { descripcion = fmp.descripcionMedioPago, monto = "Bs " + fmp.MontoRecibido.ToString("n2"), }; _ticketFactura.Documento.MediosPago.Add(itP); } } var r01 = Sistema.MyData2.VentaDocumento_Agregar(ficha); if (r01.Result == OOB.Enumerados.EnumResult.isError) { Helpers.Msg.Error(r01.Mensaje); return; } switch (ficha.TipoDocumento) { case OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoDocumento.Factura: _series.IncrementaCorrelativoFactura(); break; case OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoDocumento.NotaCredito: _series.IncrementaCorrelativoNtCredito(); break; case OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoDocumento.NotaDebito: _series.IncrementaCorrelativoNtDebito(); break; } _documentoProcesado = true; Helpers.Msg.AgregarOk(); _modoFuncion = Enumerados.EnumModoFuncion.Facturacion; _ctrItem.Limpiar(); _ctrCliente.Limpiar(); }
public void setModoNotaCredito(int idDocumento) { _modoFuncion = Enumerados.EnumModoFuncion.NotaCredito; _idDocumento = idDocumento; }