Exemple #1
0
        public void PedidoSetearEstadoDescripEnMemoria(PedidoEntidad elPedido)
        {
            EstadoPedidoEntidad unEstadoPedido = new EstadoPedidoEntidad();

            switch ((string)elPedido.VerEstadoActual().GetType().Name)
            {
            case "StatePendientePago":
                unEstadoPedido = GestorEstadoPedido.Select((int)EstadoPedidoEntidad.Options.PendientePago);
                break;

            case "StatePago":
                unEstadoPedido = GestorEstadoPedido.Select((int)EstadoPedidoEntidad.Options.Pago);
                break;

            case "StateEnCamino":
                unEstadoPedido = GestorEstadoPedido.Select((int)EstadoPedidoEntidad.Options.EnCamino);
                break;

            case "StateListoParaRetirar":
                unEstadoPedido = GestorEstadoPedido.Select((int)EstadoPedidoEntidad.Options.ListoRetirar);
                break;

            case "StateEntregado":
                unEstadoPedido = GestorEstadoPedido.Select((int)EstadoPedidoEntidad.Options.Entregado);
                break;

            case "StateCancelado":
                unEstadoPedido = GestorEstadoPedido.Select((int)EstadoPedidoEntidad.Options.Cancelado);
                break;
            }
            elPedido.VerEstadoActual().IdEstadoPedido          = unEstadoPedido.IdEstadoPedido;
            elPedido.VerEstadoActual().DescripcionEstadoPedido = unEstadoPedido.DescripcionEstadoPedido;
        }
Exemple #2
0
        //Si estaba en pago y pasó a ListoRetirar (llamada por estado==Pago)
        //TMB es para cuando estaba en EnCamino o ListoRetirar y pasa e Entregado (llamada por EnCamino y/o ListoRetirar)
        public void AvanzarPaso(PedidoEntidad elPedido)
        {
            //Cambiar Estado del Pedido en memoria a ListoRetirar/Entregado segun corresponda
            elPedido.Avanzar(false, elPedido.miFormaEntrega.IdFormaEntrega);
            PedidoSetearEstadoDescripEnMemoria(elPedido);

            //Insertar nuevo estado
            _pedidoEstadoPedidoDal.Insert(new PedidoEstadoPedidoEntidad()
            {
                Fecha          = DateTime.Now,
                IdEstadoPedido = elPedido.VerEstadoActual().IdEstadoPedido,
                IdPedido       = elPedido.IdPedido
            });
        }
Exemple #3
0
        private void MapearEstadoActualPedido(PedidoEntidad elPedido, DataSet ds)
        {
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                switch ((int)row["IdEstadoPedido"])
                {
                case 1:
                    elPedido.DefinirEstado(new Entidades.StatePatron.StatePendientePago());

                    //.CambiarEstado(TFI.Entidades.StatePatron.StatePendientePago.Instanciar());
                    break;

                case 2:
                    elPedido.DefinirEstado(new Entidades.StatePatron.StatePago());
                    break;

                case 3:
                    elPedido.DefinirEstado(new Entidades.StatePatron.StateEnCamino());
                    break;

                case 4:
                    elPedido.DefinirEstado(new Entidades.StatePatron.StateListoParaRetirar());
                    break;

                case 5:
                    elPedido.DefinirEstado(new Entidades.StatePatron.StateEntregado());
                    break;

                case 6:
                    elPedido.DefinirEstado(new Entidades.StatePatron.StateCancelado());
                    break;
                }
                elPedido.VerEstadoActual().DescripcionEstadoPedido = row["DescripcionEstadoPedido"].ToString();
                elPedido.VerEstadoActual().IdEstadoPedido          = (int)row["IdEstadoPedido"];
            }
        }
Exemple #4
0
        //Si estaba en pago y pasó a EnCamino (llamada por estado==Pago)
        public void AvanzarPaso(PedidoEntidad elPedido, string elNroTracking)
        {
            //Cambiar Estado del Pedido en memoria a EnCamino
            elPedido.Avanzar(false, elPedido.miFormaEntrega.IdFormaEntrega);
            PedidoSetearEstadoDescripEnMemoria(elPedido);

            //Actualizar Nro de Tracking del pedido
            GestorPedido.PedidoActualizarNroTracking(elPedido.IdPedido, elNroTracking);

            //Insertar nuevo estado
            _pedidoEstadoPedidoDal.Insert(new PedidoEstadoPedidoEntidad()
            {
                Fecha          = DateTime.Now,
                IdEstadoPedido = elPedido.VerEstadoActual().IdEstadoPedido,
                IdPedido       = elPedido.IdPedido
            });
        }
Exemple #5
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;
            }
        }
Exemple #6
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
            });
        }
Exemple #7
0
        protected void grilladeultimospedidos_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            ProductoCore coreProducto = new ProductoCore();

            if (e.CommandName.Equals("VerDetalle"))
            {
                int           index     = Convert.ToInt32(e.CommandArgument);
                string        code      = grilladeultimospedidos.DataKeys[index].Value.ToString();
                PedidoEntidad PedidoRow = pedidoCore.PedidoSelectByCUIT_NroPedidoCliente(usuarioentidad.CUIT, Convert.ToInt64(code));
                List <PedidoDetalleEntidad> ListadeDetalles  = pedidoCore.PedidosDetalleSelect(PedidoRow.IdPedido);
                List <DetalleDTO>           ListaDetallesDTO = new List <DetalleDTO>();
                foreach (var item in ListadeDetalles)
                {
                    DetalleDTO NuevoDetalle = new DetalleDTO();
                    NuevoDetalle.Producto       = coreProducto.Find(item.miProducto.IdProducto, 1).DescripProducto;
                    NuevoDetalle.Cantidad       = item.Cantidad;
                    NuevoDetalle.PrecioUnitario = item.PrecioUnitario;
                    NuevoDetalle.Total          = NuevoDetalle.Cantidad * NuevoDetalle.PrecioUnitario;

                    ListaDetallesDTO.Add(NuevoDetalle);
                }

                grilladedetallesdelpedido.DataSource = ListaDetallesDTO;
                grilladedetallesdelpedido.DataBind();
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                sb.Append(@"<script type='text/javascript'>");
                sb.Append("$('#currentdetail').modal('show');");
                sb.Append(@"</script>");
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(),
                                                        "ModalScript", sb.ToString(), false);
            }

            if (e.CommandName.Equals("CambiarEstado"))
            {
                string[] unosPermisosTest = new string[] { "PedidoMod" };
                if (usuarioentidad != null && this.Master.Autenticar(unosPermisosTest))
                {
                    //variables
                    PedidoCore    unManagerPedido = new PedidoCore();
                    var           Current         = HttpContext.Current;
                    PedidoEntidad unPedidoPagar   = new PedidoEntidad();
                    SucursalCore  ManagerSucursal = new SucursalCore();

                    //Inicializacion
                    int   index       = Convert.ToInt32(e.CommandArgument);
                    Int64 unNroPedido = Int64.Parse(grilladeultimospedidos.DataKeys[index].Value.ToString());

                    //Preparar parámetros a enviar a Avanzar()
                    logueado                  = (UsuarioEntidad)Current.Session["Usuario"];
                    unPedidoPagar             = pedidoCore.PedidoSelectByCUIT_NroPedidoCliente(usuarioentidad.CUIT, unNroPedido);
                    unPedidoPagar.misDetalles = unManagerPedido.PedidosDetalleSelect(unPedidoPagar.IdPedido);
                    SucursalEntidad unaSucursal = ManagerSucursal.SucursalTraerPorDireccionSucursal(unPedidoPagar.miDireccionEntrega.IdDireccion);

                    //No se puede descancelar un Pedido
                    if (unPedidoPagar.VerEstadoActual().IdEstadoPedido == (int)EstadoPedidoEntidad.Options.Cancelado)
                    {
                        System.Text.StringBuilder sb2 = new System.Text.StringBuilder();
                        sb2.Append(@"<script type='text/javascript'>");
                        sb2.Append("$('#BloqueadoModifFinalizado').modal('show');");
                        sb2.Append(@"</script>");
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(),
                                                                "ModalScript2", sb2.ToString(), false);
                    }

                    //Pendiente hacia Pago
                    if (unPedidoPagar.VerEstadoActual().IdEstadoPedido == (int)EstadoPedidoEntidad.Options.PendientePago)
                    {
                        unManagerPedido.AvanzarPaso(unPedidoPagar, unaSucursal, logueado, (int)FormaPagoEntidad.Options.Externa);
                    }

                    //Pago Hacia EnCamino
                    else if (unPedidoPagar.VerEstadoActual().IdEstadoPedido == (int)EstadoPedidoEntidad.Options.Pago && unPedidoPagar.miFormaEntrega.IdFormaEntrega == (int)FormaEntregaEntidad.Options.Correo)
                    {
                        string unNroTracking = "TNK9966784523234";
                        unManagerPedido.AvanzarPaso(unPedidoPagar, unNroTracking);
                    }

                    //Pago Hacia ListoRetirar
                    else if (unPedidoPagar.VerEstadoActual().IdEstadoPedido == (int)EstadoPedidoEntidad.Options.Pago && unPedidoPagar.miFormaEntrega.IdFormaEntrega == (int)FormaEntregaEntidad.Options.Sucursal)
                    {
                        unManagerPedido.AvanzarPaso(unPedidoPagar);
                    }

                    //EnCamino y/o ListoRetirar hacia Entregado
                    else if (unPedidoPagar.VerEstadoActual().IdEstadoPedido == (int)EstadoPedidoEntidad.Options.EnCamino | unPedidoPagar.VerEstadoActual().IdEstadoPedido == (int)EstadoPedidoEntidad.Options.ListoRetirar)
                    {
                        unManagerPedido.AvanzarPaso(unPedidoPagar);
                    }
                }
                else
                {
                    System.Text.StringBuilder sb2 = new System.Text.StringBuilder();
                    sb2.Append(@"<script type='text/javascript'>");
                    sb2.Append("$('#PedidoModFalse').modal('show');");
                    sb2.Append(@"</script>");
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(),
                                                            "ModalScript10", sb2.ToString(), false);
                }
            }

            if (e.CommandName.Equals("CancelarPedido"))
            {
                string[] unosPermisosTest = new string[] { "PedidoCancelar" };
                if (usuarioentidad != null && this.Master.Autenticar(unosPermisosTest))
                {
                    //variables
                    PedidoCore    unManagerPedido = new PedidoCore();
                    var           Current         = HttpContext.Current;
                    PedidoEntidad unPedidoPagar   = new PedidoEntidad();
                    SucursalCore  ManagerSucursal = new SucursalCore();

                    //Inicializacion
                    int   index       = Convert.ToInt32(e.CommandArgument);
                    Int64 unNroPedido = Int64.Parse(grilladeultimospedidos.DataKeys[index].Value.ToString());

                    //Preparar parámetros a enviar a Avanzar()
                    logueado      = (UsuarioEntidad)Current.Session["Usuario"];
                    unPedidoPagar = pedidoCore.PedidoSelectByCUIT_NroPedidoCliente(usuarioentidad.CUIT, unNroPedido);

                    //Cancelar
                    if (unPedidoPagar.VerEstadoActual().IdEstadoPedido != (int)EstadoPedidoEntidad.Options.Cancelado)
                    {
                        unManagerPedido.CancelarPedido(unPedidoPagar);
                    }
                    //No se puede descancelar un pedido
                    else
                    {
                        System.Text.StringBuilder sb2 = new System.Text.StringBuilder();
                        sb2.Append(@"<script type='text/javascript'>");
                        sb2.Append("$('#BloqueadoModifFinalizado').modal('show');");
                        sb2.Append(@"</script>");
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(),
                                                                "ModalScript7", sb2.ToString(), false);
                    }

                    CargarGrillaUltimosPedidos();
                }
                else
                {
                    System.Text.StringBuilder sb2 = new System.Text.StringBuilder();
                    sb2.Append(@"<script type='text/javascript'>");
                    sb2.Append("$('#PedidoModFalse').modal('show');");
                    sb2.Append(@"</script>");
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(),
                                                            "ModalScript11", sb2.ToString(), false);
                }
            }
        }