using ClientLib; using ClientLib.CommonService; using Newtonsoft.Json.Linq; using PublicLib; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace HANMI_SALE { public static class SaleForECount { // public static void ECountInterface(OrderManager caller, object obj) // { // try // { // ConstClass._MAIN.Cursor = Cursors.WaitCursor; // if (caller.gridControl_Main.DataSource == null || obj == null || !(obj is DataTable)) // { // throw new Exception("업로드할 정보를 조회 후 다시 시도하십시오."); // } // DataTable selData = caller.gridControl_Main.DataSource as DataTable; // DataRow[] rows = selData.Select("SEL_FIELD = 'Y'"); // if (rows == null || rows.Length < 1) // { // throw new Exception("업로드할 정보를 조회 후 선택을 하십시오."); // } // caller.progressBarControl_Main.Properties.Minimum = 0; // caller.progressBarControl_Main.Properties.Maximum = 6; // caller.progressBarControl_Det.Properties.Minimum = 0; // caller.progressBarControl_Det.Properties.Maximum = 0; // caller.progressBarControl_Det.Visible = false; // caller.panelControl_Progress.Visible = true; // caller.panelControl_Progress.BringToFront(); // caller.labelControl_Msg.Text = "데이터 획득중..."; // caller.progressBarControl_Main.Position = 1; // Application.DoEvents(); // DataRow[] rs; // DataTable aData = obj as DataTable; // int ii = 0; // while (ii < aData.Rows.Count) // { // rs = selData.Select("SEL_FIELD = 'Y' and ORDER_NO = '" + UtilClass.toStr(aData.Rows[ii]["ORDER_NO"]) + "'"); // if (rs == null || rs.Length < 1) // { // aData.Rows.RemoveAt(ii); // } // else // { // ii++; // } // } // //string nos = ""; // //for (int i = 0; i < aData.Rows.Count; i++) // //{ // // if (aData.Rows[i].RowState == DataRowState.Deleted) // // { // // continue; // // } // // if (UtilClass.isNull(nos)) // // { // // nos = "'" + UtilClass.toStr(aData.Rows[i]["ORDER_NO"]) + "'"; // // } // // else // // { // // nos += ",'" + UtilClass.toStr(aData.Rows[i]["ORDER_NO"]) + "'"; // // } // //} // //SerializedSqlParam[] aParam = new SerializedSqlParam[] // //{ // // ClientClass.CreateSqlParameter("COMP_CD", SqlDbType.NVarChar, ConstClass._COMP_CD), // // ClientClass.CreateSqlParameter("NOS", SqlDbType.NVarChar, nos) // //}; // //ResultData resultData = ClientClass.GetData("GetSaleDataForEcount", aParam); // //if (resultData.isError) // //{ // // throw new Exception(resultData.ResultValue); // //} // //DataTable bData = resultData.TableData; // string comp_code, api_key, user_id, user_pwd, session_id; // DataView view = new DataView(ConstClass._DATA); // view.RowFilter = "CATE_CD = 'S' and GRP_CD = 'S02' and NO_CD = '01'"; // if (view.Count < 1) // { // throw new Exception("ECOUNT 연동을 위한 회사코드가 없습니다. 개발사로 문의바랍니다."); // } // comp_code = UtilClass.toStr(view[0]["NO_CD_NM"]); // view.RowFilter = "CATE_CD = 'S' and GRP_CD = 'S02' and NO_CD = '02'"; // if (view.Count < 1) // { // throw new Exception("ECOUNT 연동을 위한 API KEY가 없습니다. 개발사로 문의바랍니다."); // } // api_key = UtilClass.toStr(view[0]["NO_CD_NM"]); // view.RowFilter = "CATE_CD = 'S' and GRP_CD = 'S02' and NO_CD = '03'"; // if (view.Count < 1) // { // throw new Exception("ECOUNT 연동을 위한 사용자 ID가 없습니다. 개발사로 문의바랍니다."); // } // user_id = UtilClass.toStr(view[0]["NO_CD_NM"]); // view.RowFilter = "CATE_CD = 'S' and GRP_CD = 'S02' and NO_CD = '04'"; // if (view.Count < 1) // { // throw new Exception("ECOUNT 연동을 위한 사용자 비밀번호가 없습니다. 개발사로 문의바랍니다."); // } // user_pwd = UtilClass.toStr(view[0]["NO_CD_NM"]); // HttpWebRequest request; // HttpWebResponse response; // JObject jObject, subObject; // string urlStr, readStr, status, zone; // ///////////////// 존코드 획득 // caller.labelControl_Msg.Text = "로그인 정보 획득중..."; // caller.progressBarControl_Main.Position = 2; // Application.DoEvents(); // urlStr = "https://oapi.ecounterp.com/OAPI/V1/Zone"; // request = (HttpWebRequest)WebRequest.Create(urlStr); // request.ContentType = "application/json"; // request.Method = "POST"; // using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) // { // writer.Write("{ \"COM_CODE\" : \"" + comp_code + "\" }"); // writer.Flush(); // writer.Close(); // } // readStr = ""; // response = (HttpWebResponse)request.GetResponse(); // using (StreamReader reader = new StreamReader(response.GetResponseStream())) // { // readStr = reader.ReadToEnd(); // } // jObject = JObject.Parse(readStr); // status = UtilClass.toStr(jObject["Status"]); // if (UtilClass.isEqual(status, "500")) // { // throw new Exception("존 정보가 없습니다. ECOUNT에 문의하십시오."); // } // else if (!UtilClass.isEqual(status, "200")) // { // throw new Exception("존 정보 획득에 실패하였습니다. ECOUNT에 문의하십시오."); // } // subObject = jObject["Data"] as JObject; // zone = UtilClass.toStr(subObject["ZONE"]); // ///////////////// 로그인 // caller.labelControl_Msg.Text = "로그인 중..."; // caller.progressBarControl_Main.Position = 3; // Application.DoEvents(); // urlStr = "https://oapi" + zone + ".ecounterp.com/OAPI/V1/OAPILogin"; // request = (HttpWebRequest)WebRequest.Create(urlStr); // request.ContentType = "application/json"; // request.Method = "POST"; // using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) // { // writer.Write("{ \"COM_CODE\" : \"" + comp_code + "\" , \"USER_ID\" : \"" + user_id + "\" , " + // "\"API_CERT_KEY\" : \"" + api_key + "\" , \"LAN_TYPE\" : \"ko-KR\" , " + // "\"ZONE\" : \"" + zone + "\" }"); // writer.Flush(); // writer.Close(); // } // readStr = ""; // response = (HttpWebResponse)request.GetResponse(); // using (StreamReader reader = new StreamReader(response.GetResponseStream())) // { // readStr = reader.ReadToEnd(); // } // jObject = JObject.Parse(readStr); // status = UtilClass.toStr(jObject["Status"]); // if (UtilClass.isEqual(status, "500")) // { // JObject eObject = jObject["Error"] as JObject; // throw new Exception(UtilClass.toStr(eObject["Message"])); // } // else if (!UtilClass.isEqual(status, "200")) // { // throw new Exception("로그인 경로가 잘못되어 실패하였습니다. ECOUNT에 문의하십시오."); // } // subObject = (jObject["Data"] as JObject)["Datas"] as JObject; // session_id = UtilClass.toStr(subObject["SESSION_ID"]); // ///////////////// 판매 업로드 // ///////////////// 출하창고는 향후 다시 결정하기 전까지 임의로 100 : 한미칼라 본사 1층 을 고정입력 // caller.labelControl_Msg.Text = "업로드 자료 생성중..."; // caller.progressBarControl_Main.Position = 4; // caller.progressBarControl_Det.Properties.Minimum = 0; // caller.progressBarControl_Det.Properties.Maximum = rows.Length; // caller.progressBarControl_Det.Position = 0; // caller.progressBarControl_Det.Visible = true; // Application.DoEvents(); // int no = 0, vat; // JArray saleList = new JArray(), saleDetails; // JObject uploadObject, dataObject, saleMaster, detail; // uploadObject = new JObject(); // DataTable srcData = new DataTable(); // srcData.Columns.Add("ORDER_NO", typeof(string)); // srcData.Columns.Add("ECOUNT_NO", typeof(string)); // srcData.TableName = "ADATA"; // DataRow srcRow; // //DataView bView = new DataView(bData); // for (int i = 0; i < aData.Rows.Count; i++) // { // if (aData.Rows[i].RowState == DataRowState.Deleted) // { // continue; // } // if (UtilClass.isNull(aData.Rows[i]["ORDER_DT"])) // { // continue; // } // dataObject = new JObject(); // no++; // saleMaster = new JObject(); // saleMaster.Add("NO", no.ToString()); // 일련번호 // saleMaster.Add("IO_DATE", UtilClass.toStr(aData.Rows[i]["ORDER_DT"]).Replace(".", "")); // 판매일자 // saleMaster.Add("CUST", UtilClass.toStr(aData.Rows[i]["CUST_CD"])); // 거래처코드 // saleMaster.Add("CUST_DES", UtilClass.toStr(aData.Rows[i]["CUST_NM"])); // 거래처명 // saleMaster.Add("WH_CD", "100"); // 출하창고 // vat = UtilClass.toInt(aData.Rows[i]["VAT_MY"]); // 부가세 // saleMaster.Add("IO_TYPE", vat > 0 ? "11" : "12"); // saleMaster.Add("P_DES1", ""); // 추가항목1(필수입력) // //bView.RowFilter = "ORDER_NO = '" + UtilClass.toStr(aData.Rows[i]["ORDER_NO"]) + "'"; // srcRow = srcData.NewRow(); // srcRow["ORDER_NO"] = aData.Rows[i]["ORDER_NO"]; // srcRow["ECOUNT_NO"] = UtilClass.toStr(aData.Rows[i]["ORDER_DT"]).Replace(".", "") + "-" + no; // srcData.Rows.Add(srcRow); // saleDetails = new JArray(); // for (int j = 0; j < rows.Length; j++) // { // caller.progressBarControl_Det.Position++; // Application.DoEvents(); // detail = new JObject(); // detail.Add("PROD_CD", UtilClass.toStr(rows[j]["ITEM_CD"])); // detail.Add("PROD_DES", UtilClass.toStr(rows[j]["ITEM_NM"])); // detail.Add("SIZE_DES", UtilClass.toStr(rows[j]["ORDER_NORM"])); // detail.Add("N_QTY", UtilClass.toInt(rows[j]["FIN_QTY"])); // detail.Add("N_PRICE", UtilClass.toInt(rows[j]["CURR_UNIT_MY"])); // detail.Add("N_SUPPLY_AMT", UtilClass.toInt(rows[j]["CURR_MY"])); // detail.Add("N_VAT_AMT", UtilClass.toInt(rows[j]["VAT_MY"])); // detail.Add("REMARKS", UtilClass.toStr(rows[j]["LN_RMK"])); // detail.Add("REQ_DATE", UtilClass.toStr(aData.Rows[i]["ORDER_DT"]).Replace(".", "")); // detail.Add("N_REQ_NO", UtilClass.toInt(aData.Rows[i]["ORDER_SEQ"])); // saleDetails.Add(detail); // } // dataObject.Add("SaleMaster", saleMaster); // dataObject.Add("SaleDetails", saleDetails); // saleList.Add(dataObject); // } // if (no < 1) // { // throw new Exception("ECOUNT에 업로드가 가능한 정보가 없습니다."); // } // uploadObject.Add("SaleList", saleList); // caller.labelControl_Msg.Text = "자료 업로드 중..."; // caller.progressBarControl_Main.Position = 5; // Application.DoEvents(); // urlStr = "https://oapi" + zone + ".ecounterp.com/OAPI/V1/Inventory/SaveSale?SESSION_ID=" + session_id; // request = (HttpWebRequest)WebRequest.Create(urlStr); // request.ContentType = "application/json"; // request.Method = "POST"; // using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) // { // writer.Write(uploadObject.ToString()); // writer.Flush(); // writer.Close(); // } // readStr = ""; // response = (HttpWebResponse)request.GetResponse(); // using (StreamReader reader = new StreamReader(response.GetResponseStream())) // { // readStr = reader.ReadToEnd(); // } // jObject = JObject.Parse(readStr); // status = UtilClass.toStr(jObject["Status"]); // if (UtilClass.isEqual(status, "500")) // { // JObject eObject = jObject["Error"] as JObject; // string errStr = UtilClass.toStr(eObject["Message"]); // throw new Exception("다음과 같은 이유로 ECOUNT에 업로드를 하지 못했습니다.\n\n" + errStr); // } // else if (!UtilClass.isEqual(status, "200")) // { // throw new Exception("업로드에 실패하였습니다. 개발사에 문의하십시오."); // } // caller.labelControl_Msg.Text = "시스템에 결과 반영중..."; // caller.progressBarControl_Main.Position = 6; // Application.DoEvents(); // ResultData data1 = new ResultData(); // data1.TableData = srcData; // ResultData[] dataList = new ResultData[] { data1 }; // SerializedSqlParam[] bParam = new SerializedSqlParam[] // { // ClientClass.CreateSqlParameter("COMP_CD", SqlDbType.NVarChar, ConstClass._COMP_CD) // }; // ResultData ecountResult = ClientClass.SetTableData("SaveECountResult", dataList, bParam); // if (ecountResult.isError) // { // MessageBox.Show("ECOUNT에 자료업로드에 성공하였지만, 다음과 같은 이유로 시스템에 반영을 하지 못했습니다.\n\n" + ecountResult.ResultValue); // } // caller.labelControl_Msg.Text = ""; // Application.DoEvents(); // ConstClass._MAIN.Cursor = Cursors.Arrow; // MessageBox.Show("자료 업로드 완료"); // caller.panelControl_Progress.Visible = false; // caller.searchProc(); // } // catch (Exception ex) // { // ConstClass._MAIN.Cursor = Cursors.Arrow; // MessageBox.Show(ex.Message); // caller.panelControl_Progress.Visible = false; // } // } } }