Example #1
0
        private async Task <Orden> AgregarOrden(Orden objCompra)
        {
            Orden orden = new Orden();

            try
            {
                orden.items = new List <Orden_Items>();


                orden.Id           = orden.GetInternalId("ORD");
                orden.fecha_orden  = System.DateTime.Now;
                orden.id_cliente   = objCompra.id_cliente;
                orden.id_proveedor = objCompra.id_proveedor;
                foreach (var item in objCompra.items)
                {
                    Orden_Items items = new Orden_Items();
                    items.Id              = items.GetInternalId("ITEM");
                    items.id_producto     = item.id_producto;
                    items.cantidad        = item.cantidad;
                    items.precio_unitario = item.precio_unitario;
                    items.estado_item     = item.estado_item;
                    orden.items.Add(items);
                }
                //ICollection<Orden> nuevoRegistro =
                await _unitOfWork_Orden.Service_Commands <Orden>().InsertOneAsync(orden);
            }
            catch (Exception error)
            {
                throw new Exception(error.InnerException + error.Message);
            }
            return(orden);
        }
Example #2
0
        public async Task <Pedido> NuevoPedido(List <ObjEntradaProducto> productos)
        {
            List <Orden>  ordenes = new List <Orden>();
            List <string> proveedoresNoRepetidos = new List <string>();

            proveedoresNoRepetidos.Add("");
            foreach (var item in productos)
            {
                Orden       objOrden = new Orden();
                Orden_Items objItem  = new Orden_Items();
                objOrden.items = new List <Orden_Items>();

                if (!proveedoresNoRepetidos.Contains(item.id_proveedor))
                {
                    proveedoresNoRepetidos.Add(item.id_proveedor);

                    objOrden.id_cliente   = item.id_cliente;
                    objOrden.id_proveedor = item.id_proveedor;

                    objItem.id_producto     = item.id_producto;
                    objItem.cantidad        = item.cantidad;
                    objItem.precio_unitario = item.precio_unitario;

                    objOrden.items.Add(objItem);
                    ordenes.Add(objOrden);
                }
                else
                {
                    objOrden              = ordenes.Find(x => x.id_proveedor == item.id_proveedor);
                    objOrden.id_cliente   = item.id_cliente;
                    objOrden.id_proveedor = item.id_proveedor;

                    objItem.id_producto     = item.id_producto;
                    objItem.cantidad        = item.cantidad;
                    objItem.precio_unitario = item.precio_unitario;

                    objOrden.items.Add(objItem);
                }
            }
            List <Orden> respuesta = new List <Orden>();

            //OrdenesController ordenNueva = new OrdenesController(_unitOfWork_Orden, _unitOfWork, _unitOfWork_orden, _unitOfWork_estado_item);
            for (int i = 0; i < ordenes.Count(); i++)
            {
                respuesta.Add(await AgregarOrden(ordenes[i]));
            }


            //Crea Pedido de acuerdo a las ordenes asociadas

            Pedido nvoPedido   = new Pedido();
            Orden  ordenPedido = new Orden();

            nvoPedido.id_orden = new List <string>();

            nvoPedido.fecha_pedido = System.DateTime.Now;


            foreach (var item in respuesta)
            {
                nvoPedido.id_orden.Add(item.Id);
            }
            await this.CrearPedido(nvoPedido);

            return(nvoPedido);
        }