Exemplo n.º 1
0
        /// <summary>
        /// args[0] = Tipo (enum)
        /// args[1] = deposito
        /// args[2] = proveedor
        /// args[3] = orden de compra (varias)
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public override CreadorCarrier <Servicios.DTO.Stock.Ingreso> Crear(params int[] args)
        {
            ParameterOverride[] parameters = { new ParameterOverride("empresa", empresa), new ParameterOverride("entidad", "OrdenDeCompra") };
            var creadorCarrier             = new CreadorCarrier <Servicios.DTO.Stock.Ingreso>();
            var creadorOrdenDeCompra       = (ICreador <Modelo.Proveedores.OrdenDeCompra>)FabricaNegocios.Instancia.Resolver(typeof(ICreador <Modelo.Proveedores.OrdenDeCompra>), parameters);
            var result = new Modelo.Stock.Ingreso();

            //dasdasdsadsa
            parameters[1] = new ParameterOverride("entidad", "Articulo");
            var buscadorArticulo = (IBuscadorArticulo)FabricaNegocios.Instancia.Resolver(typeof(IBuscadorArticulo), parameters);

            parameters[1] = new ParameterOverride("entidad", "Deposito");
            var buscaDeposito = (IBuscadorDTO <Inteldev.Core.Modelo.Stock.Deposito, Core.DTO.Stock.Deposito>)FabricaNegocios.Instancia.Resolver(typeof(IBuscadorDTO <Inteldev.Core.Modelo.Stock.Deposito, Core.DTO.Stock.Deposito>), parameters);

            parameters[1] = new ParameterOverride("entidad", "Proveedor");
            var buscaProveedor = (IBuscadorDTO <Modelo.Proveedores.Proveedor, Servicios.DTO.Proveedores.Proveedor>)FabricaNegocios.Instancia.Resolver(typeof(IBuscadorDTO <Modelo.Proveedores.Proveedor, Servicios.DTO.Proveedores.Proveedor>), parameters);

            if (args[0] == 1)
            {
                List <int> ordenesDeCompra = new List <int>();
                for (int i = 3; i < args.Length; i++)
                {
                    ordenesDeCompra.Add(args[i]);
                }
                parameters[1] = new ParameterOverride("entidad", "OrdenDeCompra");
                var buscadorOrdenDeCompra = (IBuscadorOrdenDeCompra)FabricaNegocios.Instancia.Resolver(typeof(IBuscadorOrdenDeCompra), parameters);
                parameters[1] = new ParameterOverride("entidad", "OrdenDeCompraDetalle");
                var buscadorOrdenDeCompraDetalle = (IBuscadorOrdenDeCompraDetalle)FabricaNegocios.Instancia.Resolver(typeof(IBuscadorOrdenDeCompraDetalle), parameters);
                var articulos = buscadorOrdenDeCompraDetalle.buscaArticulosIngresoStock(ordenesDeCompra);
                foreach (var articulo in articulos)
                {
                    var item = new Modelo.Stock.ItemIngreso();
                    //articulos es un diccionario que tiene articulos - orden de compra
                    item.Articulo      = articulo.Key;
                    item.OrdenDeCompra = articulo.Value;
                    result.Items.Add(item);
                }
                result.OrdenesDeCompra = buscadorOrdenDeCompra.BuscarOrdenes(ordenesDeCompra);
            }
            else
            {
                var articulos = buscadorArticulo.obtenerArticulosProveedor(args[2]);
                foreach (var articulo in articulos)
                {
                    var item = new Inteldev.Fixius.Modelo.Stock.ItemIngreso();
                    item.Articulo = articulo;
                    result.Items.Add(item);
                }
            }
            if (result.OrdenesDeCompra.Count == 0)
            {
                result.OrdenesDeCompra.Add(creadorOrdenDeCompra.Crear());
            }
            var dto = this.Mapeador.EntidadToDto(result);

            dto.Proveedor = buscaProveedor.BuscarSimple(args[2], Core.CargarRelaciones.NoCargarNada);
            dto.Deposito  = buscaDeposito.BuscarSimple(args[1], Core.CargarRelaciones.NoCargarNada);
            creadorCarrier.SetEntidad(dto);
            return(creadorCarrier);
        }
        protected override void sincronizarDetalle(DataTable dataTable, PropertyInfo propiedadEntidad, object entidad)
        {
            var listadetalle  = (propiedadEntidad.GetValue(entidad) as IEnumerable <object>).Cast <Modelo.Stock.ItemIngreso>().ToList();
            var buscaArticulo = FabricaNegocios._Resolver <IBuscador <Articulo> >();

            buscaArticulo.CargarEntidadesRelacionadas = CargarRelaciones.NoCargarNada;
            var buscaOrdenDeCompra = FabricaNegocios._Resolver <IBuscador <OrdenDeCompra> >();

            foreach (DataRow row in dataTable.Rows)
            {
                var detalle     = new Modelo.Stock.ItemIngreso();
                var articuloCod = row.Field <string>("Articulo");
                foreach (DataColumn Columna in dataTable.Columns)
                {
                    switch (Columna.ColumnName)
                    {
                    case "Articulo":
                        var articulo = buscaArticulo.BuscarPorCodigo <Articulo>((string)row[Columna.ColumnName]);
                        detalle.Articulo = articulo;
                        if (articulo != null)
                        {
                            detalle.ArticuloId = articulo.Id;
                        }
                        else
                        {
                            detalle.ArticuloId = 0;
                        }
                        break;

                    case "Bultos":
                        detalle.Bultos = (int)row[Columna.ColumnName];
                        break;

                    case "Orden De Compra":
                        var ordenDeCompra = buscaOrdenDeCompra.BuscarPorCodigo <OrdenDeCompra>((string)row[Columna.ColumnName]);
                        detalle.OrdenDeCompra   = ordenDeCompra;
                        detalle.OrdenDeCompraId = ordenDeCompra.Id;
                        break;
                    }
                }
                listadetalle.Add(detalle);
            }
            propiedadEntidad.SetValue(entidad, listadetalle);
        }