Esempio n. 1
0
        public void CancelarPedido(PedidoEntidad elPedido)
        {
            ComprobanteCore           ManagerComprobante = new ComprobanteCore();
            ComprobanteEntidad        unaFacturaAsociada = new ComprobanteEntidad();
            ComprobanteEntidad        unaNotaCredito     = new ComprobanteEntidad();
            List <ComprobanteEntidad> unosComprobantes   = new List <ComprobanteEntidad>();
            List <ComprobanteEntidad> unosCompAux        = new List <ComprobanteEntidad>();
            int unIdComprobante = 0;

            try
            {
                //Reverificar que no esté cancelado
                if (elPedido.VerEstadoActual().IdEstadoPedido == (int)EstadoPedidoEntidad.Options.Cancelado)
                {
                    return;
                }
                //Nota de crédido en caso de estar en estado > a Pendiente de Pago
                if (elPedido.VerEstadoActual().IdEstadoPedido != (int)EstadoPedidoEntidad.Options.PendientePago)
                {
                    unosComprobantes = ManagerComprobante.ComprobanteSelectByIdPedido(elPedido.IdPedido);
                    if (unosComprobantes != null)
                    {
                        unosCompAux = unosComprobantes.Where(X =>
                                                             X.miTipoComprobante.IdTipoComprobante == (int)TipoComprobanteEntidad.Options.FacturaA |
                                                             X.miTipoComprobante.IdTipoComprobante == (int)TipoComprobanteEntidad.Options.FacturaB |
                                                             X.miTipoComprobante.IdTipoComprobante == (int)TipoComprobanteEntidad.Options.FacturaC).ToList();
                    }

                    foreach (ComprobanteEntidad unAux in unosCompAux)
                    {
                        if (unIdComprobante < unAux.IdComprobante)
                        {
                            unIdComprobante = unAux.IdComprobante;
                        }
                    }

                    unaFacturaAsociada = unosComprobantes.First(X => X.IdComprobante == unIdComprobante);
                    //ObtenerDetalles factura asociada
                    unaFacturaAsociada.Detalles = ManagerComprobante.DetallesSelectByComprobante(unaFacturaAsociada.NroComprobante, unaFacturaAsociada.miSucursal.IdSucursal, unaFacturaAsociada.miTipoComprobante.IdTipoComprobante);

                    //Armar NotaCredito
                    unaNotaCredito = unaFacturaAsociada;
                    unaNotaCredito.FechaComprobante = DateTime.Now;

                    switch (unaFacturaAsociada.miTipoComprobante.IdTipoComprobante)
                    {
                    case 1:
                        unaNotaCredito.miTipoComprobante.IdTipoComprobante = (int)TipoComprobanteEntidad.Options.NotaCreditoA;
                        break;

                    case 2:
                        unaNotaCredito.miTipoComprobante.IdTipoComprobante = (int)TipoComprobanteEntidad.Options.NotaCreditoB;
                        break;

                    case 3:
                        unaNotaCredito.miTipoComprobante.IdTipoComprobante = (int)TipoComprobanteEntidad.Options.NotaCreditoC;
                        break;

                    default:
                        unaNotaCredito.miTipoComprobante.IdTipoComprobante = (int)TipoComprobanteEntidad.Options.NotaCreditoA;
                        break;
                    }

                    //NroComrpobante
                    int NroComp;
                    ComprobanteEntidad unComAux = ManagerComprobante.FindAll().LastOrDefault(X => X.miTipoComprobante.IdTipoComprobante == unaNotaCredito.miTipoComprobante.IdTipoComprobante);
                    if (unComAux != null && unComAux.IdComprobante > 0)
                    {
                        NroComp = unComAux.NroComprobante;
                    }
                    else
                    {
                        NroComp = 0;
                    }
                    NroComp++;
                    unaNotaCredito.NroComprobante = NroComp;

                    foreach (ComprobanteDetalleEntidad unDet in unaNotaCredito.Detalles)
                    {
                        unDet.IdTipoComprobante = unaNotaCredito.miTipoComprobante.IdTipoComprobante;
                        unDet.NroComprobante    = unaNotaCredito.NroComprobante;
                    }

                    ManagerComprobante.Create(unaNotaCredito);

                    //Devolución del stock
                    SucursalCore ManagerSucursal = new SucursalCore();
                    elPedido.misDetalles = this.PedidosDetalleSelect(elPedido.IdPedido);
                    ManagerSucursal.DevolverStockSucursalPorCancelacion(elPedido.misDetalles, unaNotaCredito.miSucursal.IdSucursal);
                }

                //Cambiar Estado del Pedido en memoria a Cancelado
                elPedido.Avanzar(true, elPedido.miFormaEntrega.IdFormaEntrega);
                PedidoSetearEstadoDescripEnMemoria(elPedido);

                //Insertar nuevo estado
                _pedidoEstadoPedidoDal.Insert(new PedidoEstadoPedidoEntidad()
                {
                    Fecha          = DateTime.Now,
                    IdEstadoPedido = elPedido.VerEstadoActual().IdEstadoPedido,
                    IdPedido       = elPedido.IdPedido
                });
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 2
0
        //Si esta en Pendiente y pasa a Pago (llamada por estado==Pendiente)
        public void AvanzarPaso(PedidoEntidad elPedido, SucursalEntidad laSucursal, UsuarioEntidad elCliente, int elIdFormaPago)
        {
            PagoEntidad unPago = new PagoEntidad();

            unPago.IdPedido                = elPedido.IdPedido;
            unPago.miFormaPago             = new FormaPagoEntidad();
            unPago.miFormaPago.IdFormaPago = elIdFormaPago;
            unPago.MontoPago               = (decimal)elPedido.misDetalles.Select(x => x.Cantidad * x.PrecioUnitario).Sum();
            unPago.CUIT      = elPedido.miUsuario.CUIT;
            unPago.FechaPago = DateTime.Now;

            RegistrarPago(unPago);

            ComprobanteEntidad unComprobante = new ComprobanteEntidad();//

            unComprobante.miTipoComprobante = new TipoComprobanteEntidad();
            unComprobante.miSucursal        = new SucursalEntidad();
            unComprobante.Detalles          = new List <ComprobanteDetalleEntidad>(); //
            ComprobanteCore unManagerComprobante = new ComprobanteCore();             //
            int             ContadorDetalle      = 0;                                 //

            string NroCompSolo = "";
            int    NroComp;

            if (unManagerComprobante.FindAll().Count == 0)
            {
                NroCompSolo = "0";
            }
            //Toma el nro de comprobante y lo desglosa para formar el nuevo nro de comprobante
            if (NroCompSolo != "0")
            {
                NroComp = unManagerComprobante.FindAll().LastOrDefault().NroComprobante;
                var NroCompString = NroComp.ToString();
                NroCompSolo = NroCompString;
                //NroCompSolo = NroCompString.Remove(0, 2);
            }
            NroComp = int.Parse(NroCompSolo) + 1;
            // unComprobante.NroComprobante = int.Parse(logueado.IdCondicionFiscal.ToString() + sucursalId.ToString() + NroComp.ToString());
            unComprobante.NroComprobante        = NroComp;
            unComprobante.miSucursal.IdSucursal = laSucursal.IdSucursal;
            if (elCliente.IdCondicionFiscal == 1)
            {
                unComprobante.miTipoComprobante.IdTipoComprobante = 2;//Factura B
            }
            else if (elCliente.IdCondicionFiscal == 2)
            {
                unComprobante.miTipoComprobante.IdTipoComprobante = 1; //Factura A
            }
            unComprobante.FechaComprobante = DateTime.Now;
            unComprobante.IdPedido         = elPedido.IdPedido;

            foreach (var item in elPedido.misDetalles)
            {
                ComprobanteDetalleEntidad unDetalleComprobante = new ComprobanteDetalleEntidad();
                ContadorDetalle = ContadorDetalle + 1;
                unDetalleComprobante.IdComprobanteDetalle = ContadorDetalle;
                unDetalleComprobante.NroComprobante       = unComprobante.NroComprobante;
                unDetalleComprobante.IdSucursal           = unComprobante.miSucursal.IdSucursal;
                unDetalleComprobante.IdTipoComprobante    = unComprobante.miTipoComprobante.IdTipoComprobante;
                unDetalleComprobante.CUIT                  = ConfigSection.Default.Site.Cuit;
                unDetalleComprobante.miProducto            = new ProductoEntidad();
                unDetalleComprobante.miProducto.IdProducto = item.miProducto.IdProducto;
                unDetalleComprobante.CantidadProducto      = item.Cantidad;
                unDetalleComprobante.PrecioUnitarioFact    = item.PrecioUnitario;

                unComprobante.Detalles.Add(unDetalleComprobante);
            }

            //Cambiar Estado del Pedido en memoria a Pago
            elPedido.Avanzar(false, elPedido.miFormaEntrega.IdFormaEntrega);
            PedidoSetearEstadoDescripEnMemoria(elPedido);

            //Generar factura
            unManagerComprobante.Create(unComprobante);

            //Insertar nuevo estado en BD
            _pedidoEstadoPedidoDal.Insert(new PedidoEstadoPedidoEntidad()
            {
                Fecha          = DateTime.Now,
                IdEstadoPedido = elPedido.VerEstadoActual().IdEstadoPedido,
                IdPedido       = elPedido.IdPedido
            });
        }