public async Task Post_Discount()
        {
            CRUD        sql         = new CRUD();
            Transaction transaction = new Transaction();

            transaction.storeCode  = code_store;
            transaction.customerId = customer;
            List <TransactionLine> transLine = new List <TransactionLine>();
            Article articleFromDb            = new Article();

            //==================================================================================
            try
            {
                ckon.sqlCon().Open();
                string cmd = "SELECT * FROM ARTICLE WHERE ARTICLE_ID='" + S_ID + "'";
                ckon.sqlDataRd = sql.ExecuteDataReader(cmd, ckon.sqlCon());

                if (ckon.sqlDataRd.HasRows)
                {
                    while (ckon.sqlDataRd.Read())
                    {
                        articleFromDb.articleId      = ckon.sqlDataRd["ARTICLE_ID"].ToString();
                        articleFromDb.articleName    = ckon.sqlDataRd["ARTICLE_NAME"].ToString();
                        articleFromDb.brand          = ckon.sqlDataRd["BRAND"].ToString();
                        articleFromDb.color          = ckon.sqlDataRd["COLOR"].ToString();
                        articleFromDb.department     = ckon.sqlDataRd["DEPARTMENT"].ToString();
                        articleFromDb.departmentType = ckon.sqlDataRd["DEPARTMENT_TYPE"].ToString();
                        articleFromDb.gender         = ckon.sqlDataRd["GENDER"].ToString();
                        articleFromDb.id             = Convert.ToInt32(ckon.sqlDataRd["_id"].ToString());
                        articleFromDb.price          = Convert.ToInt32(ckon.sqlDataRd["PRICE"].ToString());
                        articleFromDb.size           = ckon.sqlDataRd["SIZE"].ToString();
                        articleFromDb.unit           = ckon.sqlDataRd["UNIT"].ToString();
                        subtotal = Convert.ToInt32(ckon.sqlDataRd["PRICE"].ToString());
                        articleFromDb.articleIdAlias = ckon.sqlDataRd["ARTICLE_ID_ALIAS"].ToString();
                        isService = Convert.ToInt32(ckon.sqlDataRd["IS_SERVICE"].ToString());
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                if (ckon.sqlDataRd != null)
                {
                    ckon.sqlDataRd.Close();
                }

                if (ckon.sqlCon().State == ConnectionState.Open)
                {
                    ckon.sqlCon().Close();
                }
            }
            //====================================================================
            TransactionLine t = new TransactionLine();

            t.subtotal = subtotal;
            t.quantity = qty;
            t.discount = 0;
            t.price    = subtotal;
            //wahyu
            //t.isService = isService;

            t.article = articleFromDb;
            transLine.Add(t);

            transaction.transactionLines = transLine;
            BiensiPOSContext.BiensiPOSDataContext contex = new BiensiPOSContext.BiensiPOSDataContext();
            DiscountCalculateNew dc = new DiscountCalculateNew(contex);

            try
            {
                DiscountMaster resultData = dc.Post(transaction);
                //=================================================
                try
                {
                    foreach (var c in resultData.discountItems)
                    {
                        disc      = (Int32)c.amountDiscount;
                        disc_code = c.discountCode;
                        disc_type = c.discountType;
                        disc_desc = c.discountDesc;
                    }
                }
                catch (Exception ex)
                {
                }
            }
            catch (Exception ex)
            {
            }
        }
        public void retreive(String transaksi, String code_store, String id_cust)
        {
            koneksi ckon = new koneksi();

            String art_id, art_name, spg_id, size, color, qty, disc_desc, sub_total2, discount_code, discount_code_get;
            int    price, sub_total, disc, disc_type_new, status_diskon_api;

            CRUD        sql         = new CRUD();
            Transaction transaction = new Transaction();

            transaction.storeCode  = code_store;
            transaction.customerId = id_cust;
            List <TransactionLine> transLine = new List <TransactionLine>();
            Article articleFromDb            = new Article();

            try
            {
                ckon.sqlCon().Open();
                String cmd = "SELECT article._id ,transaction_line.ARTICLE_ID ,transaction_line.QUANTITY, transaction_line.SUBTOTAL, transaction_line.SPG_ID, transaction_line.DISCOUNT, "
                             + "transaction_line.DISCOUNT_DESC,transaction_line.DISCOUNT_TYPE,transaction_line.DISCOUNT_CODE, article.ARTICLE_NAME, article.SIZE, article.COLOR, article.PRICE, "
                             + "article.BRAND, article.DEPARTMENT, article.DEPARTMENT_TYPE, article.GENDER, article.UNIT, article.ARTICLE_ID_ALIAS FROM transaction_line, article "
                             + "WHERE article.ARTICLE_ID = transaction_line.ARTICLE_ID AND transaction_line.TRANSACTION_ID = '" + transaksi + "' ORDER BY transaction_line._id ASC";
                ckon.sqlDataRd = sql.ExecuteDataReader(cmd, ckon.sqlCon());

                if (ckon.sqlDataRd.HasRows)
                {
                    while (ckon.sqlDataRd.Read())
                    {
                        art_id        = ckon.sqlDataRd["ARTICLE_ID"].ToString();
                        art_name      = ckon.sqlDataRd["ARTICLE_NAME"].ToString();
                        spg_id        = ckon.sqlDataRd["SPG_ID"].ToString();
                        size          = ckon.sqlDataRd["SIZE"].ToString();
                        color         = ckon.sqlDataRd["COLOR"].ToString();
                        price         = Convert.ToInt32(ckon.sqlDataRd["PRICE"].ToString());
                        qty           = ckon.sqlDataRd["QUANTITY"].ToString();
                        disc_desc     = ckon.sqlDataRd["DISCOUNT_DESC"].ToString();
                        sub_total     = Convert.ToInt32(ckon.sqlDataRd["SUBTOTAL"].ToString());
                        disc          = Convert.ToInt32(ckon.sqlDataRd["DISCOUNT"].ToString());
                        disc_type_new = Convert.ToInt32(ckon.sqlDataRd["DISCOUNT_TYPE"].ToString());
                        discount_code = ckon.sqlDataRd["DISCOUNT_CODE"].ToString();

                        articleFromDb.articleId      = ckon.sqlDataRd["ARTICLE_ID"].ToString();
                        articleFromDb.articleName    = ckon.sqlDataRd["ARTICLE_NAME"].ToString();
                        articleFromDb.brand          = ckon.sqlDataRd["BRAND"].ToString();
                        articleFromDb.color          = ckon.sqlDataRd["COLOR"].ToString();
                        articleFromDb.department     = ckon.sqlDataRd["DEPARTMENT"].ToString();
                        articleFromDb.departmentType = ckon.sqlDataRd["DEPARTMENT_TYPE"].ToString();
                        articleFromDb.gender         = ckon.sqlDataRd["GENDER"].ToString();
                        articleFromDb.id             = Convert.ToInt32(ckon.sqlDataRd["_id"].ToString());
                        articleFromDb.price          = Convert.ToInt32(ckon.sqlDataRd["PRICE"].ToString());
                        articleFromDb.size           = ckon.sqlDataRd["SIZE"].ToString();
                        articleFromDb.unit           = ckon.sqlDataRd["UNIT"].ToString();
                        articleFromDb.articleIdAlias = ckon.sqlDataRd["ARTICLE_ID_ALIAS"].ToString();

                        //======================================================================
                        TransactionLine t = new TransactionLine();

                        t.discount     = disc;
                        t.subtotal     = sub_total;
                        t.quantity     = Int32.Parse(qty);
                        t.price        = price;
                        t.discountType = disc_type_new;
                        t.discountCode = discount_code;
                        t.article      = articleFromDb;
                        transLine.Add(t);
                    }
                }
                //=====================================================================================

                transaction.transactionLines = transLine;

                BiensiPOSContext.BiensiPOSDataContext contex = new BiensiPOSContext.BiensiPOSDataContext();
                DiscountCalculateNew dc         = new DiscountCalculateNew(contex);
                DiscountMaster       resultData = dc.Post(transaction);
                Console.WriteLine(JsonConvert.SerializeObject(transaction));
                //=================================================
                //for (int i = 0; i < resultData.discounts.Count; i++)
                //{
                //    discount_code_get = resultData.discounts[i].discountCode;
                //    data_diskon(discount_code_get);
                //}
                foreach (var c in resultData.discounts)
                {
                    var b = c.discountApiItems.ToList();

                    discount_code_get = c.discountCode;
                    status_diskon_api = c.status;
                    String art_diskon = c.articleId;
                    int    disc_type  = c.discountType;
                    //=================insert ke table disctype2 saat type diskon 2 dan status 1===========
                    if (c.status == 1 && c.discountType == 2)
                    {
                        String cmd_delete = "delete from disctype2";
                        sql.ExecuteNonQuery(cmd_delete);
                        foreach (var a in b)
                        {
                            var hasil = a.price - a.amountDiscount;

                            String cmd_insert = "Insert into disctype2 (TransId, articleid, Price, Discount, TotHarga, DiscountRetailId, DiscPersent) values ('" + transaksi + "','" + a.articleId + "','" + a.price + "','" + a.amountDiscount + "','" + hasil + "','" + a.discountCode + "','" + a.discountDesc + "')";
                            sql.ExecuteNonQuery(cmd_insert);
                        }
                    }
                    if (c.status == 1 && c.discountType == 3)
                    {
                        if (resultData.discountItems != null)
                        {
                            foreach (var a in resultData.discountItems)
                            {
                                int    price_real = 0, qty_real = 0, result_real = 0;
                                String cmd_transLine = "Select * from transaction_line where TRANSACTION_ID = '" + transaksi + "' AND ARTICLE_ID = '" + a.articleId + "'";
                                ckon.sqlDataRd = sql.ExecuteDataReader(cmd_transLine, ckon.sqlCon());

                                if (ckon.sqlDataRd.HasRows)
                                {
                                    while (ckon.sqlDataRd.Read())
                                    {
                                        price_real = Convert.ToInt32(ckon.sqlDataRd["PRICE"].ToString());
                                        qty_real   = Convert.ToInt32(ckon.sqlDataRd["QUANTITY"].ToString());
                                    }
                                }
                                result_real = qty_real * price_real;

                                String cmd_update = "UPDATE transaction_line SET SUBTOTAL = '" + result_real + "', Discount = '0', DISCOUNT_TYPE = '" + a.discountType + "', DISCOUNT_CODE = '" + a.discountCode + "', DISCOUNT_DESC = '" + a.discountCode + "' where TRANSACTION_ID = '" + transaksi + "' AND ARTICLE_ID = '" + a.articleId + "'";
                                sql.ExecuteNonQuery(cmd_update);
                            }
                        }
                        if (c.discountApiItems != null)
                        {
                            foreach (var aa in c.discountApiItems)
                            {
                                int    price_real = 0, qty_real = 0, result_real = 0;
                                String coodee = ""; String article_id_update = "";
                                String cmd_transLine = "Select * from transaction_line where TRANSACTION_ID = '" + transaksi + "' ";
                                ckon.sqlDataRd = sql.ExecuteDataReader(cmd_transLine, ckon.sqlCon());

                                if (ckon.sqlDataRd.HasRows)
                                {
                                    while (ckon.sqlDataRd.Read())
                                    {
                                        coodee            = ckon.sqlDataRd["DISCOUNT_CODE"].ToString();
                                        article_id_update = ckon.sqlDataRd["ARTICLE_ID"].ToString();
                                        result_real       = price_real * qty_real;
                                        if (coodee == aa.discountCode)
                                        {
                                            result_real = aa.qty * Convert.ToInt32(aa.price);

                                            String cmd_update = "UPDATE transaction_line SET SUBTOTAL = '" + result_real + "', Discount = '0', DISCOUNT_TYPE = '" + aa.discountType + "', DISCOUNT_CODE = '" + aa.discountCode + "', DISCOUNT_DESC = '" + aa.discountCode + "' where TRANSACTION_ID = '" + transaksi + "' AND ARTICLE_ID = '" + aa.articleId + "'";
                                            sql.ExecuteNonQuery(cmd_update);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    //=================UPADTE STATUS DISKON KE DATABASE LOKAL(PROMOTION HEADER)=============
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                if (ckon.sqlDataRd != null)
                {
                    ckon.sqlDataRd.Close();
                }

                if (ckon.sqlCon().State == ConnectionState.Open)
                {
                    ckon.sqlCon().Close();
                }
            }
        }