private void SyncTglTerima(int wiserid)
        {
            string host = "http://devwiserdc.sas-autoparts.com:8000";

            using (var db = new Database())
            {
                db.Commands.Add(db.CreateCommand("[usp_AppSetting_LIST]"));
                db.Commands[0].Parameters.Add(new Parameter("@Key", SqlDbType.VarChar, "WiserDC_Host"));
                DataTable dtbl = db.Commands[0].ExecuteDataTable();

                if (dtbl.Rows.Count > 0)
                {
                    host = dtbl.Rows[0]["Value"].ToString();
                }
                else
                {
                    throw new Exception("Wiser belum di setting");
                }
            }
            JSON opt = new JSON(JSONType.Object);

            opt.ObjAdd("id", new JSON(wiserid));

            string errm = "";

            XNet       xn  = new XNet(host + "/api/antargudang/synchtglterima", XNetMethod.GET);
            XNetThread xnt = xn.Get(opt, r =>
            {
                if (r.Error != null)
                {
                    errm = r.Error.Message;
                }
                else if (r.Output.Length > 0)
                {
                    JSON jres = JSON.Parse(r.Output);
                    if (jres.Type == JSONType.Object)
                    {
                        if (jres.ObjExists("Result") && jres["Result"].BoolValue)
                        {
                            errm = "";
                        }
                        else if (jres.ObjExists("Msg"))
                        {
                            errm = jres["Msg"].StringValue;
                        }
                        else
                        {
                            errm = "Marking to server failed";
                        }
                        return;
                    }
                }
                errm = "Marking to server failed";
            });

            if (errm.Length > 0)
            {
                MessageBox.Show("Server message:\n" + errm);
            }
        }
        private void ImportData(int[] ids)
        {
            using (var db = new Database())
            {
                db.Commands.Add(db.CreateCommand("[usp_AppSetting_LIST]"));
                db.Commands[0].Parameters.Add(new Parameter("@Key", SqlDbType.VarChar, "WiserDC_Host"));
                DataTable dtbl2 = db.Commands[0].ExecuteDataTable();

                string host = "http://devwiserdc.sas-autoparts.com:8000";
                if (dtbl2.Rows.Count > 0)
                {
                    host = dtbl2.Rows[0]["Value"].ToString();
                }
                else
                {
                    MessageBox.Show("Download gagal, Wiser belum di setting");
                    return;
                }

                Guid HeaderID, DetailID;

                List <int> scs = new List <int>();
                foreach (int i in ids)
                {
                    JSON             cur  = mdat[i.ToString()];
                    List <Parameter> cmdl = new List <Parameter>();
                    db.Commands.Clear();

                    if (cur["isarowid"].GuidValue(DBNull.Value) == DBNull.Value)
                    {
                        HeaderID = Guid.NewGuid();
                    }
                    else
                    {
                        HeaderID = (Guid)cur["isarowid"].GuidValue(DBNull.Value);
                    }

                    cmdl.Add(new Parameter("@RowID", SqlDbType.UniqueIdentifier, HeaderID));
                    cmdl.Add(new Parameter("@RecordID", SqlDbType.VarChar, FingerPrintWiser(cur["wiserid"].StringValue)));
                    cmdl.Add(new Parameter("@DrGudang", SqlDbType.VarChar, cur["DrGudang"].StringValue));
                    cmdl.Add(new Parameter("@KeGudang", SqlDbType.VarChar, cur["KeGudang"].StringValue));
                    cmdl.Add(new Parameter("@TglKirim", SqlDbType.DateTime, cur["TglKirim"].DateTimeValue(DBNull.Value)));
                    cmdl.Add(new Parameter("@TglTerima", SqlDbType.DateTime, cur["TglTerima"].DateTimeValue(DBNull.Value)));
                    cmdl.Add(new Parameter("@NoAG", SqlDbType.VarChar, cur["NoAG"].StringValue));
                    cmdl.Add(new Parameter("@Pengirim", SqlDbType.VarChar, cur["Pengirim"].StringValue));
                    cmdl.Add(new Parameter("@Penerima", SqlDbType.VarChar, cur["Penerima"].StringValue));
                    cmdl.Add(new Parameter("@DrCheck1", SqlDbType.VarChar, cur["DrCheck1"].StringValue));
                    cmdl.Add(new Parameter("@DrCheck2", SqlDbType.VarChar, cur["DrCheck2"].StringValue));
                    cmdl.Add(new Parameter("@KeCheck1", SqlDbType.VarChar, cur["KeCheck1"].StringValue));
                    cmdl.Add(new Parameter("@KeCheck2", SqlDbType.VarChar, cur["KeCheck2"].StringValue));
                    cmdl.Add(new Parameter("@Catatan", SqlDbType.VarChar, cur["Catatan"].StringValue));
                    cmdl.Add(new Parameter("@expedisi", SqlDbType.VarChar, cur["Expedisi"].StringValue));
                    cmdl.Add(new Parameter("@NoKendaraan", SqlDbType.VarChar, cur["NoKendaraan"].StringValue));
                    cmdl.Add(new Parameter("@NamaSopir", SqlDbType.VarChar, cur["NamaSopir"].StringValue));
                    cmdl.Add(new Parameter("@LastUpdatedBy", SqlDbType.VarChar, cur["LastUpdatedBy"].StringValue));
                    cmdl.Add(new Parameter("@wiserid", SqlDbType.Int, cur["wiserid"].NumberValue));
                    cmdl.Add(new Parameter("@WiserTag", SqlDbType.VarChar, "WISERDC"));

                    try
                    {
                        db.Commands.Clear();
                        db.Commands.Add(db.CreateCommand("[usp_AntarGudang_WISERDC_SET]"));
                        db.Commands[0].Parameters = cmdl;
                        DataTable dtbl = db.Commands[0].ExecuteDataTable();

                        if (dtbl.Rows.Count > 0)
                        {
                            if (dtbl.Rows[0]["Result"].ToString() == "1")
                            {
                                Guid id = (Guid)dtbl.Rows[0]["RowID"];

                                int  cid          = 0;
                                bool itOk         = true;
                                bool itTrasaction = false;

                                try
                                {
                                    db.Commands.Clear();
                                    foreach (string ck in cur["Details"].ObjKeys)
                                    {
                                        /*
                                         *
                                         *                          "wiserid"		=> $row2->id,
                                         *                          "KodeBarang"    => $row2->barang->kodebarang,
                                         *                          "QtyKirim"      => $row2->qtynotaag,
                                         *                          "QtyTerima"     => 0,
                                         *                          "Catatan"       => $row2->catatan,
                                         *                          "Ongkos"        => null,
                                         *                          "SyncFlag"      => 1,
                                         *                          "QtyDO"         => $row2->qtyrqag,
                                         *                          "isarowid"		=> $row2->isarowid,
                                         *                          "LastUpdatedBy" => $tmp["LastUpdatedBy"],
                                         *                          "LastUpdatedTime" => $tmp["LastUpdatedTime"],
                                         *                          "HrgBeli"       => 0
                                         */
                                        JSON curd = cur["Details"][ck];

                                        if (curd["isarowid"].GuidValue(DBNull.Value) == DBNull.Value)
                                        {
                                            DetailID = Guid.NewGuid();
                                        }
                                        else
                                        {
                                            DetailID = (Guid)curd["isarowid"].GuidValue(DBNull.Value);
                                        }

                                        cmdl = new List <Parameter>();
                                        cmdl.Add(new Parameter("@RowID", SqlDbType.UniqueIdentifier, DetailID));
                                        cmdl.Add(new Parameter("@HeaderID", SqlDbType.UniqueIdentifier, id));
                                        cmdl.Add(new Parameter("@RecordID", SqlDbType.VarChar, FingerPrintWiser(curd["wiserid"].StringValue)));
                                        cmdl.Add(new Parameter("@TransactionID", SqlDbType.VarChar, FingerPrintWiser(curd["wiserid"].StringValue)));
                                        cmdl.Add(new Parameter("@KodeBarang", SqlDbType.VarChar, curd["KodeBarang"].StringValue));
                                        cmdl.Add(new Parameter("@QtyKirim", SqlDbType.Int, curd["QtyKirim"].NumberValue));
                                        cmdl.Add(new Parameter("@QtyTerima", SqlDbType.Int, curd["QtyTerima"].NumberValue));
                                        cmdl.Add(new Parameter("@QtyDO", SqlDbType.Int, curd["QtyDO"].NumberValue));
                                        cmdl.Add(new Parameter("@Ongkos", SqlDbType.Money, curd["Ongkos"].NumberValue));
                                        cmdl.Add(new Parameter("@HrgBeli", SqlDbType.Money, curd["HrgBeli"].NumberValue));
                                        cmdl.Add(new Parameter("@Catatan", SqlDbType.VarChar, curd["Catatan"].StringValue));
                                        cmdl.Add(new Parameter("@SyncFlag", SqlDbType.Bit, 0));
                                        cmdl.Add(new Parameter("@LastUpdatedBy", SqlDbType.VarChar, curd["LastUpdatedBy"].StringValue));
                                        cmdl.Add(new Parameter("@WiserID", SqlDbType.Int, curd["wiserid"].NumberValue));
                                        cmdl.Add(new Parameter("@WiserHeaderID", SqlDbType.Int, curd["wiserheaderid"].NumberValue));
                                        cmdl.Add(new Parameter("@WiserTag", SqlDbType.VarChar, "WISERDC"));

                                        db.Commands.Add(db.CreateCommand("[usp_AntarGudangDetail_WISERDC_SET]"));
                                        db.Commands[cid].Parameters = cmdl;
                                        cid += 1;
                                    }

                                    itTrasaction = true;
                                    db.BeginTransaction();
                                    foreach (Command cmd in db.Commands)
                                    {
                                        try
                                        {
                                            cmd.ExecuteNonQuery();
                                        }
                                        catch (Exception ex)
                                        {
                                            Error.LogError(ex);
                                            if (itTrasaction)
                                            {
                                                db.RollbackTransaction();
                                            }
                                            itOk = false;
                                            break;
                                        }
                                    }
                                }
                                catch (Exception)
                                {
                                    itOk = false;
                                }

                                if (itOk)
                                {
                                    if (itTrasaction)
                                    {
                                        db.CommitTransaction();
                                    }
                                    scs.Add((int)cur["wiserid"].NumberValue);
                                }
                                else
                                {
                                    try
                                    {
                                        db.Commands.Clear();
                                        db.Commands.Add(db.CreateCommand("[usp_AntarGudang_WISERDC_DELETE]"));
                                        db.Commands[0].Parameters.Add(new Parameter("@RowID", SqlDbType.UniqueIdentifier, id));
                                        db.Commands[0].Parameters.Add(new Parameter("@WiserID", SqlDbType.Int, cur["wiserid"].NumberValue));

                                        db.Commands[0].ExecuteNonQuery();
                                    }
                                    catch (Exception) { }
                                }
                            }
                        }
                    }
                    catch (Exception ex) {
                        MessageBox.Show("Error: " + ex);
                    }
                }

                if (scs.Count > 0)
                {
                    if (!hasSynch)
                    {
                        hasSynch = true;
                    }
                    MarkAsSuccess(scs.ToArray());

                    JSON opt = new JSON(JSONType.Object);
                    JSON lst = new JSON(JSONType.Array);
                    foreach (int ix in scs)
                    {
                        lst.ArrAdd(new JSON(ix));
                    }
                    opt.ObjAdd("mark", new JSON(true));
                    opt.ObjAdd("ids", lst);

                    string errm = "";

                    XNet       xn  = new XNet(host + "/api/antargudang/synch", XNetMethod.GET);
                    XNetThread xnt = xn.Get(opt, r =>
                    {
                        if (r.Error != null)
                        {
                            errm = r.Error.Message;
                        }
                        else if (r.Output.Length > 0)
                        {
                            JSON jres = JSON.Parse(r.Output);
                            if (jres.Type == JSONType.Object)
                            {
                                if (jres.ObjExists("Result") && jres["Result"].BoolValue)
                                {
                                    errm = "";
                                }
                                else if (jres.ObjExists("Msg"))
                                {
                                    errm = jres["Msg"].StringValue;
                                }
                                else
                                {
                                    errm = "Marking to server failed";
                                }
                                return;
                            }
                        }
                        errm = "Marking to server failed";
                    });

                    if (errm.Length > 0)
                    {
                        MessageBox.Show("Server message:\n" + errm);
                    }
                    if (scs.Count == mdat.Count)
                    {
                        this.Close();
                    }
                }
                else
                {
                    MessageBox.Show("Synch gagal");
                }
            }
        }
示例#3
0
        private void GetData()
        {
            Form thisx = this;

            if (ipProgress == null)
            {
                ipProgress = new InPopup(this, pnlProgress);
            }
            if (fpProgress == null)
            {
                fpProgress = new FakeProgress(progbProgress);
            }

            BackgroundWorker bgw = new BackgroundWorker();

            bgw.DoWork += (a, b) =>
            {
                fpProgress.Start();

                JSON opt = new JSON(JSONType.Object);
                opt.ObjAdd("from", new JSON(rangeDateBox1.FromDate.Value.ToString("yyyy-MM-dd")));
                opt.ObjAdd("to", new JSON(rangeDateBox1.ToDate.Value.ToString("yyyy-MM-dd")));

                string host = "https://devwiser.sas-autoparts.com";
                using (var db = new Database())
                {
                    db.Commands.Add(db.CreateCommand("[usp_AppSetting_LIST]"));
                    db.Commands[0].Parameters.Add(new Parameter("@Key", SqlDbType.VarChar, "Wiser_Host"));
                    DataTable dtbl = db.Commands[0].ExecuteDataTable();

                    if (dtbl.Rows.Count > 0)
                    {
                        host = dtbl.Rows[0]["Value"].ToString();
                    }
                    else
                    {
                        throw new Exception("Wiser belum di setting");
                    }
                }

                string apiu = host;
                apiu += "/api/toko/synch/" + GlobalVar.Gudang;

                XNet       xn  = new XNet(apiu, XNetMode.Synchronous);
                XNetThread xnt = xn.Get(opt, c =>
                {
                    if (bgw.CancellationPending)
                    {
                        return;
                    }

                    try
                    {
                        if (c.Error != null)
                        {
                            throw new Exception("Terjadi error: " + c.Error.Message);
                        }
                        else if (c.Output.Length > 0)
                        {
                            JSON jdat = JSON.Parse(c.Output);
                            if (jdat.Type == JSONType.Object)
                            {
                                if (jdat.ObjExists("Result") && jdat["Result"].BoolValue)
                                {
                                    if (jdat.ObjExists("Data"))
                                    {
                                        DataTable dtbl0 = new DataTable();

                                        dtbl0.Columns.Add("check");
                                        foreach (string k in jdat["Data"].ObjKeys)
                                        {
                                            JSON cur          = jdat["Data"][k];
                                            List <object> itm = new List <object>();

                                            itm.Add(true);
                                            foreach (string k2 in cur.ObjKeys)
                                            {
                                                switch (k2)
                                                {
                                                case "details":
                                                    // do nothing
                                                    break;

                                                default:
                                                    if (dtbl0.Rows.Count <= 0)
                                                    {
                                                        switch (k2)
                                                        {
                                                        case "int":
                                                            dtbl0.Columns.Add(k2, typeof(int));
                                                            break;

                                                        case "total":
                                                        case "count":
                                                            dtbl0.Columns.Add(k2, typeof(double));
                                                            break;

                                                        default:
                                                            dtbl0.Columns.Add(k2);
                                                            break;
                                                        }
                                                    }
                                                    itm.Add(cur[k2].Value);
                                                    break;
                                                }
                                            }

                                            dtbl0.Rows.Add(itm.ToArray());
                                        }

                                        dset = new DataSet();
                                        mdat = jdat["Data"];
                                        dset.Tables.Add(dtbl0);
                                        GV01.Invoke(new Action(() => GV01.DataSource = dset.Tables[0]));

                                        b.Result = true;
                                        return;
                                    }
                                    throw new Exception("Response server is not expected");
                                }
                                else
                                {
                                    if (jdat.ObjExists("Msg"))
                                    {
                                        throw new Exception("Server error: " + jdat["Msg"]);
                                    }
                                    else
                                    {
                                        throw new Exception("Server error: " + jdat.ToString());
                                    }
                                }
                            }
                            else
                            {
                                throw new Exception("Server error: " + c.Output);
                            }
                        }
                        else
                        {
                            throw new Exception("Tidak ada response dari server");
                        }
                    }
                    catch (Exception ex)
                    {
                        b.Result = ex.Message;
                    }
                });

                while (xnt.OnWorking)
                {
                    if (bgw.CancellationPending)
                    {
                        b.Cancel = true;
                        xnt.Cancel();
                        break;
                    }
                }
                ;
                if (b.Result != null && !b.Result.Equals(true))
                {
                    throw new Exception(b.Result.ToString());
                }
            };
            bgw.RunWorkerCompleted += (a, b) =>
            {
                bool r = false;
                if (b.Cancelled)
                {
                    MessageBox.Show(thisx, "Operasi di gagalkan");
                }
                else if (b.Error != null)
                {
                    MessageBox.Show(thisx, b.Error.Message);
                }
                //else if (dtbl0.Rows.Count == 0) { MessageBox.Show("Tidak Ada Data"); return; }
                else
                {
                    r = true;
                }

                ipProgress.Close(r);
            };

            ipProgress.OpenDialog(this, a =>
            {
            }, () => bgw.CancelAsync());
            bgw.RunWorkerAsync();
        }