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