public void Eliminar(DistribucionMercaderia distribucion)
 {
     try
     {
         repository.Eliminar(distribucion);
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
 public bool Insertar(DistribucionMercaderia distribucion)
 {
     try
     {
         return(repository.Insertar(distribucion));
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
        private void PrepararDatos(ref DistribucionMercaderia distribucion)
        {
            var operacionDocumentos = OperacionDocumentoBL.Instancia.GetByOperacion(distribucion.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
                });
            }

            distribucion.Documentos = documentos;
        }
        public ActionResult Crear()
        {
            ViewData["Accion"] = "Crear";

            var distribucion = new DistribucionMercaderia
            {
                IdOperacion    = IdOperacion,
                FechaDocumento = FechaSistema,
                FechaEntrega   = FechaSistema.AddDays(30)
            };

            CompraSeleccionada   = new Compra();
            DetalleTransferencia = new List <MovimientoProducto>();

            PrepararDatos(ref distribucion);
            return(PartialView("DistribucionMercaderiaPanel", distribucion));
        }
        public JsonResult Crear(DistribucionMercaderia distribucionMercaderia)
        {
            var jsonResponse = new JsonResponse();

            if (ModelState.IsValid)
            {
                try
                {
                    distribucionMercaderia.IdEmpresa           = IdEmpresa;
                    distribucionMercaderia.IdSucursal          = IdSucursal;
                    distribucionMercaderia.IdOperacion         = IdOperacion;
                    distribucionMercaderia.IdEmpleado          = UsuarioActual.IdEmpleado;
                    distribucionMercaderia.Estado              = (int)TipoEstadoTransaccion.Registrado;
                    distribucionMercaderia.FechaCreacion       = FechaCreacion;
                    distribucionMercaderia.FechaModificacion   = FechaModificacion;
                    distribucionMercaderia.UsuarioCreacion     = UsuarioActual.IdEmpleado;
                    distribucionMercaderia.UsuarioModificacion = UsuarioActual.IdEmpleado;
                    distribucionMercaderia.MovimientoProducto  = new List <MovimientoProducto>();
                    distribucionMercaderia.TransaccionImpuesto = new List <TransaccionImpuesto>();

                    var compra = CompraBL.Instancia.Single((int)distribucionMercaderia.IdTransaccionReferencia);

                    var serieDocumento = SerieDocumentoBL.Instancia.Single(distribucionMercaderia.IdSerieDocumento);
                    distribucionMercaderia.SerieDocumento = serieDocumento.Serie;
                    distribucionMercaderia.CondicionPago  = 0;
                    distribucionMercaderia.IdAlmacen      = compra.IdAlmacen;

                    var operacion = OperacionBL.Instancia.Single(IdOperacion);

                    var secuencia = 0;
                    foreach (var movimientoProducto in DetalleTransferencia)
                    {
                        var idAlmacen = movimientoProducto.IdAlmacen;
                        movimientoProducto.Secuencia           = ++secuencia;
                        movimientoProducto.FechaRegistro       = distribucionMercaderia.FechaDocumento;
                        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;
                        }

                        if (movimientoProducto.MovimientoProductoStock.Count == 0)
                        {
                            movimientoProducto.MovimientoProductoStock.Add(
                                new MovimientoProductoStock
                            {
                                Secuencia = 1,
                                IdAlmacen = (int)idAlmacen,
                                Cantidad  = movimientoProducto.Cantidad,
                                LoteSerie = string.Empty
                            });
                        }
                        distribucionMercaderia.MovimientoProducto.Add(movimientoProducto);
                    }

                    DistribucionMercaderiaBL.Instancia.Insertar(distribucionMercaderia);

                    jsonResponse.Success = true;
                    jsonResponse.Message = "Se Proceso con exito.";
                }
                catch (Exception ex)
                {
                    jsonResponse.Message = ex.Message;
                }
            }
            else
            {
                jsonResponse.Message = "Por favor ingrese todos los campos requeridos";
            }
            return(Json(jsonResponse, JsonRequestBehavior.AllowGet));
        }