Example #1
0
        private void AgregarClienteMovimiento(VentaDataBase ventaData, Venta venta)
        {
            //ClienteMovimiento
            ClientesMovimiento clientesMovimiento = new ClientesMovimiento();

            clientesMovimiento.IdCliente         = ventaData.ClienteId;
            clientesMovimiento.IdTipoComprobante = (int?)ventaData.TipoComprobanteSeleccionado;
            clientesMovimiento.IdComprobante     = venta.Id;
            clientesMovimiento.Concepto          = ventaData.TipoComprobanteSeleccionado.ToString();
            clientesMovimiento.Haber             = ventaData.TotalPagar;
            clientesMovimiento.FechaGeneracion   = _clock.Now;
            clientesMovimiento.FechaAlta         = _clock.Now;
            clientesMovimiento.SucursalAltaId    = ventaData.SucursalId;
            clientesMovimiento.OperadorAltaId    = ventaData.OperadorId;

            Uow.ClientesMovimientos.Agregar(clientesMovimiento);
        }
Example #2
0
 public static void CrearCxC(Factura factura)
 {
     using (var db = new RestaurantEntities())
     {
         ClientesMovimiento cxc     = new ClientesMovimiento();
         Cliente            cliente = FactoryClientes.Item(factura.CedulaRif);
         cxc.Año                 = factura.Fecha.Value.Year;
         cxc.CedulaRif           = factura.CedulaRif;
         cxc.Concepto            = string.Format("FACTURA {0}", factura.Numero);
         cxc.Debito              = factura.Credito;
         cxc.Fecha               = factura.Fecha;
         cxc.IdUsuario           = FactoryUsuarios.UsuarioActivo.IdUsuario;
         cxc.Mes                 = factura.Fecha.Value.Month;
         cxc.Monto               = factura.Credito;
         cxc.RazonSocial         = factura.RazonSocial;
         cxc.Saldo               = factura.Credito;
         cxc.Vence               = cxc.Fecha.Value.AddDays(cliente == null?30:cliente.DiasCredito.GetValueOrDefault(0));
         cxc.Tipo                = "FACTURA";
         cxc.IdClienteMovimiento = FactoryContadores.GetMax("IdClienteMovimiento");
         db.ClientesMovimientos.AddObject(cxc);
         db.SaveChanges();
     }
 }
Example #3
0
        private void BtnGuardar_Click(object sender, EventArgs e)
        {
            if (_venta.EstadoVentaId == EstadoVentaEnum.Anulada)
            {
                _messageBoxDisplayService.ShowWarning("Factura ya anulada");
                return;
            }

            var operador = this.ObtenerOperadorAdministrador();

            if (operador == null)
            {
                return;
            }

            if (!this.EsOperadorAdmin)
            {
                //Guardamos el operador que autorizo la operacion.
                _venta.OperadorAutoriza = operador.Id;
            }

            //Anular la Venta
            _venta.EstadoVentaId          = EstadoVentaEnum.Anulada;
            _venta.FechaModificacion      = _clock.Now;
            _venta.OperadorModificacionId = Context.OperadorActual.Id;
            _venta.SucursalModificacionId = Context.SucursalActual.Id;

            Uow.Ventas.Modificar(_venta);

            //devolver el stock
            foreach (VentaDetalleDto ventaDetalleDto in _ventaDetalleDto)
            {
                var tituloStock =
                    Uow.TitulosStock.Obtener(
                        ts => ts.TituloId == ventaDetalleDto.TituloId && ts.SucursalId == Context.SucursalActual.Id);

                tituloStock.StkPr                 += ventaDetalleDto.CantidadPropia;
                tituloStock.StkCn                 += ventaDetalleDto.CantidadConsig;
                tituloStock.FechaModificacion      = _clock.Now;
                tituloStock.OperadorModificacionId = Context.OperadorActual.Id;
                tituloStock.SucursalModificacionId = Context.SucursalActual.Id;

                Uow.TitulosStock.Modificar(tituloStock);
            }

            //Devovler caja
            Caja caja = this.Context.CajaActual;

            if (caja.Ingresos == null)
            {
                caja.Ingresos = 0;
            }
            caja.Ingresos -= (float?)_venta.TotalPagado;
            if (caja.Saldo == null)
            {
                caja.Saldo = 0;
            }
            caja.Saldo                 -= (float?)_venta.TotalPagado;
            caja.FechaModificacion      = _clock.Now;
            caja.SucursalModificacionId = Context.SucursalActual.Id;   //Sucursal del operador
            caja.OperadorModificacionId = (Context.OperadorActual.Id); //Id el operador

            Uow.Cajas.Modificar(caja);

            //CajaMovimiento
            var cajaMovimientoAnterior = Uow.CajaMovimientos.Obtener(c => c.ComprobanteId == _venta.Id);

            CajaMovimiento cajaMovimiento = new CajaMovimiento();

            cajaMovimiento.Id     = Guid.NewGuid();
            cajaMovimiento.CajaId = caja.Id;
            if (_venta.CondicionVentaId == CondicionVentaEnum.CuentaCorriente)
            {
                cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.AnulaciónFacCtaCte;
            }
            else
            {
                cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.AnulaciónFacContado;
            }

            cajaMovimiento.TipoComprobante = TipoComprobanteEnum.FacturaAnulada;
            cajaMovimiento.ComprobanteId   = _venta.Id;
            cajaMovimiento.Senia           = cajaMovimientoAnterior.Senia;
            cajaMovimiento.Importe         = cajaMovimientoAnterior.Importe;
            cajaMovimiento.ImpFac          = cajaMovimientoAnterior.ImpFac;
            cajaMovimiento.Recargo         = cajaMovimientoAnterior.Recargo;
            cajaMovimiento.Efectivo        = cajaMovimientoAnterior.Efectivo;
            cajaMovimiento.Tarjeta         = cajaMovimientoAnterior.Tarjeta;
            cajaMovimiento.Cheque          = cajaMovimientoAnterior.Cheque;
            cajaMovimiento.Deposito        = cajaMovimientoAnterior.Deposito;

            cajaMovimiento.PcAlta         = Environment.MachineName;
            cajaMovimiento.SucursalAltaId = _venta.SucursalAltaId;
            cajaMovimiento.OperadorAltaId = _venta.OperadorAltaId;
            cajaMovimiento.FechaAlta      = _clock.Now;

            cajaMovimiento.SucursalModificacionId = Context.SucursalActual.Id;   //Sucursal del operador
            cajaMovimiento.OperadorModificacionId = (Context.OperadorActual.Id); //Id el operador
            cajaMovimiento.FechaModificacion      = _clock.Now;

            Uow.CajaMovimientos.Agregar(cajaMovimiento);

            //MovimientoCliente
            ClientesMovimiento clientesMovimiento = new ClientesMovimiento();

            clientesMovimiento.IdCliente         = _venta.ClienteId;
            clientesMovimiento.IdTipoComprobante = (int)TipoComprobanteEnum.FacturaAnulada;
            clientesMovimiento.IdComprobante     = _venta.Id;
            clientesMovimiento.Concepto          = TipoComprobanteEnum.FacturaAnulada.ToString();
            clientesMovimiento.Debe            = _venta.TotalPagado;
            clientesMovimiento.FechaGeneracion = _clock.Now;
            clientesMovimiento.FechaAlta       = _clock.Now;
            clientesMovimiento.SucursalAltaId  = Context.SucursalActual.Id;   //Sucursal del operador
            clientesMovimiento.OperadorAltaId  = (Context.OperadorActual.Id); //Id el operador

            Uow.ClientesMovimientos.Agregar(clientesMovimiento);

            //Actulizar señas de cliente
            var monto = cajaMovimientoAnterior.Senia;

            if (monto > 0 && monto != null)
            {
                int sucursal = 1;
                ClienteMontoFavor clienteMontoFavor = new ClienteMontoFavor();
                clienteMontoFavor.Id                = Guid.NewGuid();
                clienteMontoFavor.ClienteId         = _venta.ClienteId;
                clienteMontoFavor.FechaComprobante  = _clock.Now;
                clienteMontoFavor.TipoComprobanteId = TipoComprobanteEnum.SeñaCliente;
                clienteMontoFavor.LCN               = "R" + sucursal.ToString().PadLeft(4, '0') + CalcularLCN().PadLeft(8, '0');
                clienteMontoFavor.Concepto          = "Seña " + clienteMontoFavor.LCN;
                clienteMontoFavor.Importe           = monto;
                clienteMontoFavor.ImpOcupado        = 0;
                clienteMontoFavor.Observaciones     = TipoComprobanteEnum.SeñaCliente.ToString() + "Por anulación de factura";
                clienteMontoFavor.FechaAlta         = _clock.Now;
                clienteMontoFavor.OperadorAltaId    = Context.OperadorActual.Id;
                clienteMontoFavor.SucursalAltaId    = Context.SucursalActual.Id;

                Uow.ClientesMontosFavor.Agregar(clienteMontoFavor);
            }

            //si la venta fue en CuentaCorriente, Anular las cuotas
            if (_venta.CondicionVentaId == CondicionVentaEnum.CuentaCorriente)
            {
                var cuotas = Uow.ClientesCuentasCorrientes.Listado().Where(cc => cc.VentaId == _venta.Id);
                foreach (ClienteCuentaCorriente cuota in cuotas)
                {
                    cuota.Pagado                 = cuota.Importe;
                    cuota.Observaciones          = "Venta Anulada";
                    cuota.FechaModificacion      = _clock.Now;
                    cuota.OperadorModificacionId = Context.OperadorActual.Id;
                    cuota.SucursalModificacionId = Context.SucursalActual.Id;

                    Uow.ClientesCuentasCorrientes.Modificar(cuota);
                }
            }

            //Si la venta fue con tarjeta, setear en 0 el estado del movimiento
            if (cajaMovimientoAnterior.Tarjeta != null)
            {
                var tarjetamovimiento =
                    Uow.TarjetasMovimientos.Obtener(t => t.CajaMovimientoId == cajaMovimientoAnterior.Id);

                if (tarjetamovimiento != null)
                {
                    tarjetamovimiento.Estado                 = 0;
                    tarjetamovimiento.FechaModificacion      = _clock.Now;
                    tarjetamovimiento.OperadorModificacionId = Context.OperadorActual.Id;
                    tarjetamovimiento.SucursalModificacionId = Context.SucursalActual.Id;

                    Uow.TarjetasMovimientos.Modificar(tarjetamovimiento);
                }
            }

            //si la venta fue con deposito, setear la columna debito=credito para que se anule
            if (cajaMovimientoAnterior.Deposito != null)
            {
                var cuentaMovimiento =
                    Uow.CuentasMovimientos.Obtener(t => t.ComprobanteId == _venta.Id);

                if (cuentaMovimiento != null)
                {
                    cuentaMovimiento.Debito                 = cuentaMovimiento.Credito;
                    cuentaMovimiento.FechaModificacion      = _clock.Now;
                    cuentaMovimiento.OperadorModificacionId = Context.OperadorActual.Id;
                    cuentaMovimiento.SucursalModificacionId = Context.SucursalActual.Id;

                    Uow.CuentasMovimientos.Modificar(cuentaMovimiento);
                }
            }

            //si la venta fue con Cheque, setear estadocheque=1
            if (cajaMovimientoAnterior.Cheque != null)
            {
                var chequeTercero =
                    Uow.ChequesTercero.Obtener(t => t.CajaMovimientoId == cajaMovimientoAnterior.Id);

                if (chequeTercero != null)
                {
                    chequeTercero.EstadoChequeId         = 1;
                    chequeTercero.FechaModificacion      = _clock.Now;
                    chequeTercero.OperadorModificacionId = Context.OperadorActual.Id;
                    chequeTercero.SucursalModificacionId = Context.SucursalActual.Id;

                    Uow.ChequesTercero.Modificar(chequeTercero);
                }
            }


            Uow.Commit();
            _messageBoxDisplayService.ShowSuccess("Factura anulada correctamente");

            //this.Close();
            OnAccionTerminada();
        }