Beispiel #1
0
        public void LlenarInfoGoePower()
        {
            this._conexion.StartDate = DateTime.Today.AddDays(-320);
            //this._conexion.StartDate = new DateTime(2018, 1, 1);
            this._conexion.EndDate = DateTime.Now;
            int[] ordenes = this.GetListaOrdenes(OrderStatuses.All);
            if (ordenes == null)
            {
                Console.WriteLine($"No hay ordenes por procesar en la tienda {this._nombreTienda}");
                return;
            }
            Console.WriteLine($"Total de ordenes {ordenes.Length} en la tienda {this._nombreTienda}");

            foreach (int orden in ordenes)
            {
                OrdenDAO   ordenDao   = new OrdenDAO();
                ItemDAO    itemDao    = new ItemDAO();
                ClienteDAO clienteDAO = new ClienteDAO();

                string __ordenID = $"{this._nombreTienda}_{orden}";

                this._parametroOrden = new AuthHeaderOrder()
                {
                    CompanyID  = this._conexion.CompanyID,
                    MasterKey  = this._conexion.MasterKey,
                    OrderID    = orden,
                    ProducerID = this._conexion.ProducerID,
                    Username   = this._conexion.Username
                };


                AuthReturnOrder result = this.client.GetOrder(this._parametroOrden);
                Order           order  = result.Order;
                Job[]           jobs   = result.Jobs;

                var      cte = clienteDAO.BuscarClienteCampoExtra(order.WebUserID.ToString());
                XElement detalleOrdenXML;
                // Convertir La respuesta en XML para Guardarlo en la Base de Datos
                try
                {
                    detalleOrdenXML = result.ToXElement <AuthReturnOrder>();
                }
                catch (Exception e)
                {
                    detalleOrdenXML = null;
                }


                Orden ordendDto = new Orden()
                {
                    tienda           = this._nombreTienda,
                    ordenID          = __ordenID,
                    status           = order.OrderStatus,
                    webUserID        = order.WebUserID,
                    completeDate     = order.CompletedDate,
                    orderDate        = order.OrderDate,
                    releaseDate      = order.ReleaseDate,
                    shippingDate     = order.ShippingDate,
                    Total            = (float)order.TotalPrice,
                    clienteIntelisis = cte != null ? cte.Clave : "16776",
                    detalle          = detalleOrdenXML
                };


                var o = ordenDao.existe(__ordenID);
                if (o != null)
                {
                    if (o.status != order.OrderStatus)
                    {
                        Console.WriteLine("Es diferente");
                        Console.WriteLine($"La orden {orden} cambio de  {o.status}  a {order.OrderStatus}");
                        ordenDao.Actualiza(ordendDto);
                    }
                    continue;
                }


                Console.WriteLine($"Insertando la orden {orden} de la tienda {this._nombreTienda}");
                ordenDao.Agregar(ordendDto);


                foreach (Job job in jobs)
                {
                    Console.WriteLine($"Insertando el job {job.JobID}");
                    int cantidad  = job.Quantity;
                    int _cantidad = cantidad;
                    if (job.Records > 1)
                    {
                        _cantidad = job.Records;
                    }
                    Item itemDto = new Item()
                    {
                        cantidad    = job.Quantity,
                        descripcion = job.JobName,
                        ordenID     = __ordenID,
                        precio      = (job.Price / _cantidad),
                        records     = job.Records,
                        sku         = job.SKU,
                        setSize     = job.SetSize
                    };
                    itemDao.Agregar(itemDto);
                }
                if (order.ShippingPrice > 0)
                {
                    Console.WriteLine($"Insertando el envio");
                    Item envio = new Item()
                    {
                        sku         = "EN",
                        descripcion = "Gastos de Envio",
                        cantidad    = 1,
                        precio      = order.ShippingPrice,
                        ordenID     = __ordenID,
                        setSize     = 1,
                        records     = 1
                    };
                    itemDao.Agregar(envio);
                }
            }
        }