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; }
//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 }); }
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"]; } }
//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 }); }
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; } }
//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 }); }
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); } } }