Esempio n. 1
0
        static void WriteOrder(RMA r, string errfile)
        {
            try {
                using (System.IO.StreamWriter fout = new System.IO.StreamWriter(errfile, true))
                {
                    foreach (RMAItem ri in r.ItemList)
                    {
                        fout.Write(Quote(r.OrderID));
                        fout.Write(",");
                        fout.Write(Quote(r.OrderNumber));
                        fout.Write(",");
                        fout.Write(Quote(r.PONumber));
                        fout.Write(",");
                        fout.Write(Quote(r.Memo));
                        fout.Write(",");
                        fout.Write(Quote(ri.VendorSKU));
                        fout.Write(",");
                        fout.Write(Quote(Convert.ToString(ri.Quantity)));
                        fout.Write(",");
                        fout.Write(Quote(Convert.ToString(ri.ItemRate)));
                        fout.Write(",");
                        fout.Write(Quote(r.StoreID));
                        fout.Write(",");
                        fout.Write(Quote(ri.RQ4SKU));
                        fout.Write(",");
                        fout.WriteLine(Quote(ri.RQ4ItemID));
                    }

                    fout.Flush();
                    fout.Close();
                }
            } catch {
            }
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            //string RQ4_SERVICE_URL = "https://vmi7.iqmetrix.net/VMIService.asmx"; // TEST
            string RQ4_SERVICE_URL = "https://vmi1.iqmetrix.net/VMIService.asmx";    // PRODUCTION
            //Guid RQ4_CLIENT_ID = new Guid("{aac62064-a98d-4c1e-95ac-6fc585c6bef8}"); // PRODUCTION ARCH
            Guid RQ4_CLIENT_ID = new Guid("{23f1f07a-3a9c-4ea6-bc9a-efa628afb56d}"); // PRODUCTION LIPSEY
            //Guid RQ4_CLIENT_ID = new Guid("{aad193b3-f55a-43ef-b28a-c796c1e608de}"); // PRODUCTION CA WIRELESS
            //Guid RQ4_CLIENT_ID = new Guid("{ab3d009d-77ee-4df8-b10e-f651f344a218}"); // PRODUCTION MAYCOM
            //Guid RQ4_CLIENT_ID = new Guid("{6a443ad0-b057-4330-b4e6-8b0579a52863}"); // SOLUTIONS CENTER
            //Guid RQ4_CLIENT_ID = new Guid("{fb6ed46e-5bd9-445c-9308-6161a504a933}"); // PRODUCTION NAWS
            //Guid RQ4_CLIENT_ID = new Guid("{54d739a1-3ce9-425e-bb28-cf934209f088}"); // PRODUCTION TOUCHTEL
            //Guid RQ4_CLIENT_ID = new Guid("{3949d039-069a-4ea0-a616-9adafcf553d7}"); //PRODUCTION MOBILE CENTER

            string infile  = null;
            string outfile = null;
            string errfile = null;

            using (OpenFileDialog ofd = new OpenFileDialog()) {
                ofd.Title  = "input csv";
                ofd.Filter = "csv files (*.csv)|*.csv";

                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    infile = ofd.FileName;
                }
            }

            if ((infile == null) || (!System.IO.File.Exists(infile)))
            {
                return;
            }
            outfile = infile + "-out.csv";
            if ((outfile == null) || (outfile == ""))
            {
                return;
            }
            errfile = infile + "-error.csv";
            if ((errfile == null) || (errfile == null))
            {
                return;
            }

            Dictionary <String, RMA> rmas = new Dictionary <string, RMA>();

            System.IO.StreamWriter LOG = new System.IO.StreamWriter(outfile);
            LOG.AutoFlush = true;
            LOG.WriteLine("id,po");

            Microsoft.VisualBasic.FileIO.TextFieldParser csvfile = new Microsoft.VisualBasic.FileIO.TextFieldParser(infile);
            csvfile.Delimiters    = new string[] { "," };
            csvfile.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited;

            csvfile.ReadFields(); // headers

            // Internal ID	Document Number	PO/Check Number	Memo (Main)	Display Name	Quantity	Item Rate	storeid	rqsku	rqid

            while (!csvfile.EndOfData)
            {
                String[] fields = csvfile.ReadFields();

                if ((fields != null) && (fields.Length == 10))
                {
                    if (!rmas.ContainsKey(fields[1]))
                    {
                        RMA r = new RMA();
                        r.OrderID     = fields[0];
                        r.OrderNumber = fields[1];
                        r.PONumber    = fields[2];
                        r.Memo        = fields[3];
                        r.StoreID     = fields[7];
                        rmas.Add(r.OrderNumber, r);
                    }

                    RMAItem ri = new RMAItem();
                    ri.VendorSKU = fields[4];
                    ri.Quantity  = Math.Abs(Convert.ToInt16(fields[5]));
                    ri.ItemRate  = Convert.ToDecimal(fields[6]);
                    ri.RQ4SKU    = fields[8];
                    ri.RQ4ItemID = fields[9];

                    rmas[fields[1]].ItemList.Add(ri);
                }
            }

            try {
                csvfile.Close();
            } catch {
            }

            Console.WriteLine("RMAS FOUND: " + rmas.Count);
            Console.WriteLine();
            Console.WriteLine("PUSH ENTER TO START");
            Console.ReadLine();

            if (rmas.Count == 0)
            {
                return;
            }

            int rmanum = 1;

            RQ4.VMIService vmi = new RQ4.VMIService();
            vmi.CookieContainer = new System.Net.CookieContainer();
            vmi.Url             = RQ4_SERVICE_URL;

            RQ4.VendorIdentity vid = new RQ4.VendorIdentity();
            vid.Username        = "******";
            vid.Password        = "******";
            vid.VendorID        = new Guid("F9B982C3-E7B1-4FD5-9C24-ABE752E058C7");
            vid.Client          = new RQ4.ClientAgent();
            vid.Client.ClientID = RQ4_CLIENT_ID;

            foreach (KeyValuePair <string, RMA> kvp in rmas)
            {
                Console.Write(rmanum + "/" + rmas.Count + " - " + kvp.Key + " -> ");

                vid.Client.StoreID = Convert.ToInt16(kvp.Value.StoreID);

                RQ4.ReturnMerchandiseAuthorization rma = new RQ4.ReturnMerchandiseAuthorization();
                rma.VendorRMANumber = kvp.Value.OrderNumber;
                rma.Comments        = kvp.Value.OrderNumber; // <--------- required

                List <RQ4.RMAProduct> items = new List <RQ4.RMAProduct>();

                foreach (RMAItem item in kvp.Value.ItemList)
                {
                    RQ4.RMAProduct prod = new RQ4.RMAProduct {
                        RQProductID = Convert.ToInt16(item.RQ4ItemID), RQProductSku = item.RQ4SKU, TotalQuantity = item.Quantity, NonSellableQuantity = 0, UnitCost = item.ItemRate, ActionTaken = RQ4.ActionTaken.Credit
                    };
                    items.Add(prod);
                }

                rma.ProductData = items.ToArray();

                RQ4.ReturnMerchandiseAuthorization outrma = null;

                try {
                    outrma = vmi.CreateRMA(vid, rma);

                    Console.WriteLine(outrma.RMAIDByStore);

                    LOG.WriteLine(kvp.Value.OrderID + "," + outrma.RMAIDByStore);
                    LOG.Flush();
                } catch (System.Web.Services.Protocols.SoapException se) {
                    Console.WriteLine("error");

                    WriteOrder(kvp.Value, errfile);

                    LOG.WriteLine(kvp.Value.OrderID + "," + Quote(se.Message).Replace("\r", "").Replace("\n", ""));
                    LOG.Flush();
                } catch (Exception ex) {
                    Console.WriteLine("error");

                    WriteOrder(kvp.Value, errfile);

                    LOG.WriteLine(kvp.Value.OrderID + ",error");
                    LOG.Flush();
                }

                rmanum++;

                System.Threading.Thread.Sleep(250);
            }

            try {
                LOG.Flush();
                LOG.Close();
            } catch {
            }

            Console.WriteLine();
            Console.WriteLine("done");
            Console.ReadLine();
        }