private void PrepararDatos(ref IngresoOtroConceptoDTO ingreso)
        {
            var operacionDocumentos = OperacionDocumentoBL.Instancia.GetByOperacion(ingreso.IdOperacion);
            var tiposDocumentos     = ItemTablaBL.Instancia.GetByTabla((int)TipoTabla.TipoComprobante);
            var documentos          = new List <Comun>();

            foreach (var documento in operacionDocumentos)
            {
                var tipoDocumento = tiposDocumentos.FirstOrDefault(p => p.IdItemTabla == documento.TipoDocumento);
                documentos.Add(new Comun {
                    Id = documento.TipoDocumento, Nombre = tipoDocumento.Valor
                });
            }

            var sucursales  = SucursalBL.Instancia.GetAutorizadas(IdEmpresa, UsuarioActual.IdEmpleado);
            var direcciones = new List <Comun>();

            foreach (var sucursal in sucursales)
            {
                var ubigeo = UbigeoBL.Instancia.Single(sucursal.IdUbigeo);
                direcciones.Add(new Comun
                {
                    Id     = sucursal.IdSucursal,
                    Nombre = string.Format("{0} - {1}, {2}", sucursal.Nombre, sucursal.Direccion, ubigeo.Direccion)
                });
            }

            if (ingreso.IdTransaccion == 0)
            {
                var transaccionImpuesto = new List <TransaccionImpuesto>();
                var operacionImpuestos  = OperacionImpuestoBL.Instancia.GetByOperacion(ingreso.IdOperacion);

                foreach (var operacionImpuesto in operacionImpuestos)
                {
                    transaccionImpuesto.Add(new TransaccionImpuesto
                    {
                        IdImpuesto     = operacionImpuesto.IdImpuesto,
                        Secuencia      = operacionImpuesto.Orden,
                        Tasa           = operacionImpuesto.Impuesto.Monto,
                        NombreImpuesto = operacionImpuesto.Impuesto.Nombre,
                        Signo          = operacionImpuesto.Impuesto.Signo,
                        EsEditable     = Convert.ToBoolean(operacionImpuesto.Impuesto.EsEditable)
                    });
                }

                ingreso.TransaccionImpuesto = transaccionImpuesto.OrderBy(p => p.Secuencia).ToList();
            }
            else
            {
                ingreso.TransaccionImpuesto = TransaccionImpuestoBL.Instancia.GetByTransaccion(ingreso.IdTransaccion);
            }

            ingreso.Documentos  = documentos;
            ingreso.Direcciones = direcciones;
            ingreso.Monedas     = MonedaBL.Instancia.GetAll();
            ingreso.Almacenes   = AlmacenBL.Instancia.GetByIdSucursal(IdSucursal);
        }
Beispiel #2
0
 public bool Actualizar(IngresoOtroConceptoDTO transaccion)
 {
     try
     {
         return(repository.Actualizar(transaccion));
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
        public ActionResult Crear()
        {
            ViewData["Accion"] = "Crear";

            var ingreso = new IngresoOtroConceptoDTO
            {
                IdOperacion    = IdOperacion,
                FechaDocumento = FechaSistema,
                Estado         = (int)TipoEstadoTransaccion.Registrado,
            };

            DetalleOtrosIngresos = new List <MovimientoProducto>();

            PrepararDatos(ref ingreso);
            return(PartialView("OtrosIngresosPanel", ingreso));
        }
        public JsonResult Modificar(IngresoOtroConceptoDTO ingreso)
        {
            var jsonResponse = new JsonResponse();

            if (ModelState.IsValid)
            {
                try
                {
                    var ingresoOriginal = IngresoOtroConceptoBL.Instancia.Single(ingreso.IdTransaccion);
                    var operacion       = OperacionBL.Instancia.Single(IdOperacion);

                    ingresoOriginal.IdPersona           = UsuarioActual.IdEmpleado;
                    ingresoOriginal.IdAlmacen           = ingreso.IdAlmacen;
                    ingresoOriginal.FechaEntrega        = ingreso.FechaEntrega;
                    ingresoOriginal.Glosa               = ingreso.Glosa;
                    ingresoOriginal.MontoTipoCambio     = ingreso.MontoTipoCambio;
                    ingresoOriginal.IdEmpleado          = UsuarioActual.IdEmpleado;
                    ingresoOriginal.UsuarioCreacion     = UsuarioActual.IdEmpleado;
                    ingresoOriginal.UsuarioModificacion = UsuarioActual.IdEmpleado;
                    ingresoOriginal.MovimientoProducto  = new List <MovimientoProducto>();
                    ingresoOriginal.TransaccionImpuesto = new List <TransaccionImpuesto>();

                    if (DetalleOtrosIngresos.Count == 0)
                    {
                        jsonResponse.Success = false;
                        jsonResponse.Message = "No se puede registrar sin ingresar los productos.";
                    }
                    else
                    {
                        var secuencia = 0;
                        foreach (var movimientoProducto in DetalleOtrosIngresos)
                        {
                            movimientoProducto.Secuencia           = ++secuencia;
                            movimientoProducto.FechaRegistro       = ingreso.FechaDocumento;
                            movimientoProducto.IdAlmacen           = ingreso.IdAlmacen;
                            movimientoProducto.SignoStock          = operacion.SignoStock;
                            movimientoProducto.Estado              = (int)TipoEstadoTransaccion.Registrado;
                            movimientoProducto.FechaCreacion       = FechaCreacion;
                            movimientoProducto.FechaModificacion   = FechaModificacion;
                            movimientoProducto.UsuarioCreacion     = UsuarioActual.IdEmpleado;
                            movimientoProducto.UsuarioModificacion = UsuarioActual.IdEmpleado;

                            var secuenciaDetalle = 0;
                            foreach (var productoStock in movimientoProducto.MovimientoProductoStock)
                            {
                                productoStock.Secuencia = ++secuenciaDetalle;
                                productoStock.IdAlmacen = ingreso.IdAlmacen.Value;
                            }

                            if (movimientoProducto.MovimientoProductoStock.Count == 0)
                            {
                                movimientoProducto.MovimientoProductoStock.Add(
                                    new MovimientoProductoStock
                                {
                                    Secuencia = 1,
                                    IdAlmacen = ingreso.IdAlmacen.Value,
                                    Cantidad  = movimientoProducto.Cantidad,
                                    LoteSerie = string.Empty
                                });
                            }

                            ingresoOriginal.MovimientoProducto.Add(movimientoProducto);
                        }

                        IngresoOtroConceptoBL.Instancia.Actualizar(ingresoOriginal);

                        jsonResponse.Success = true;
                        jsonResponse.Message = "El ingreso se modifico correctamente.";
                    }
                }
                catch (Exception ex)
                {
                    jsonResponse.Message = ex.Message;
                }
            }
            else
            {
                jsonResponse.Message = "Por favor ingrese todos los campos requeridos";
            }
            return(Json(jsonResponse, JsonRequestBehavior.AllowGet));
        }