// 2018-06-01 jsy : 중국YTO 내륙 송장번호를 API를 사용하여 가져온다 public static string GetYTOLocalWaybillNo( ref OrdMaster INVOICE , ref string error_str , YTOLocalApiModel API_INFO , List <CurrencyModels> CURRENCY_DATA = null ) { error_str = ""; // 중국YTO 내륙 API 연동에 필요한 값을 체크한다 if (API_INFO.CLIENT_ID.Length == 0 || API_INFO.PARTNER_ID.Length == 0) { error_str = "환경설정에서 API 연동에 필요한 값을 먼저 설정해야 합니다."; return(""); } // 환율 데이터를 가져온다 List <CurrencyModels> CURRENCY_LIST = CURRENCY_DATA; if (CURRENCY_LIST == null) { CURRENCY_LIST = ConfigDatabase.GetCurrencyDataList(INVOICE.EST_CODE); } //===================================================================================== // 1. 배송번호가 설정되었는지 체크한다 //===================================================================================== if (INVOICE.DELVNO.Length > 0) { error_str = string.Format("{0} : ", INVOICE.WAYBILLNO) + comm_global.Language.Resources.API_SHIPPING_NUMBER_ALREADY_SET; return(""); } //===================================================================================== // 2. YTO API에 전달할 데이터를 생성한다 //===================================================================================== if (INVOICE.GoodsList.Count == 0) { error_str = string.Format("{0} : ", INVOICE.WAYBILLNO) + comm_global.Language.Resources.API_WE_CANNOT_GET_PRODUCT_INFO; return(""); } DateTime UPLOAD_TIME = DateTime.UtcNow.AddHours(8); // 중국시간 설정 YTOLocalModel model = new YTOLocalModel(); model.RAINBOWCODE = INVOICE.EST_CODE; model.AGENTCODE = INVOICE.ESE_CODE; model.INVOICENO = INVOICE.WAYBILLNO; //model.clientID = ""; // customerId 와 동일 //model.logisticProviderID = "YTO"; // 물류회사ID ==> YTO 고정값 //model.customerId = ""; // clientID 와 동일 model.txLogisticID = string.Format("{0}{1}", GlobalSettings.ORDERNO_PREFIX, Regex.Replace(INVOICE.WAYBILLNO, @"[^a-zA-Z0-9-]", "")); // 주문번호(중복되지 않게) //model.tradeNo = "1"; // 비즈니스 트랜잭션 번호 (선택 사항) //model.totalServiceFee = 0.0; // 보험 값 = insuranceValue * 상품 수량 (기본값은 0.0) //model.codSplitFee = 0.0; // 물류 회사 포인트 [COD] 실행 (일시적으로 사용되지 않음, 기본값은 0.0) //model.orderType = 1; // 주문 유형 (0-COD, 1- 정상 주문, 2- 휴대용 주문, 3- 반환 주문, 4- 지불) //model.serviceType = 1; // 서비스 유형 (1 - 집 수신, 2 - 다음날 4 - 아침 8 - 날짜, 0 - 연락처). 기본값은 0입니다. //model.flag = 1; // 주문 플래그, 기본값은 0, 의미가 없습니다. //model.mailNo = ""; // 물류청구서 번호 //model.type = 0; // 주문 유형 (이 필드는 이전 버전과의 호환성을 위해 예약되어 있습니다) // sender model.sender_name = INVOICE.SENDER_NAME; // 이름 model.sender_postCode = API_INFO.SENDER_POSTCODE; // 우편번호 model.sender_phone = "0"; // 전화번호 model.sender_mobile = API_INFO.SENDER_MOBILE; // 휴대폰번호 model.sender_prov = API_INFO.SENDER_PROV; // 성 model.sender_city = API_INFO.SENDER_CITY; // 시, 구 model.sender_address = API_INFO.SENDER_ADDR; // 세부주소 // 중국주소를 자동으로 성,시,구 로 나눈다 string state = ""; string city = ""; string district = ""; string addr2 = ""; string zipcode = ""; if (!SettingsDatabase.SplitAddress_CN((INVOICE.RECEIVER_ADDR1 + INVOICE.RECEIVER_ADDR2), ref state, ref city, ref district, ref addr2, ref zipcode, true)) { state = INVOICE.RECEIVER_STATE; city = INVOICE.RECEIVER_CITY; district = INVOICE.RECEIVER_DISTRICT; addr2 = INVOICE.RECEIVER_ADDR2; zipcode = INVOICE.RECEIVER_ZIPCODE; } // receiver model.receiver_name = INVOICE.RECEIVER_NAME; // 이름 model.receiver_postCode = zipcode; // 우편번호 model.receiver_phone = "0"; // 전화번호 model.receiver_mobile = INVOICE.RECEIVER_TELNO; // 휴대폰번호 model.receiver_prov = state; // 성 model.receiver_city = ((city.Length > 0 && district.Length > 0) ? string.Format("{0},{1}", city, district) : ""); // 시, 구 model.receiver_address = addr2; // 세부주소 model.sendStartTime = UPLOAD_TIME.ToString("yyyy-MM-dd HH:mm:ss"); model.sendEndTime = UPLOAD_TIME.ToString("yyyy-MM-dd HH:mm:ss"); //model.goodsValue = 0.0; // 상품 및 배송비는 포함하지만 서비스 요금은 포함되지 않은 제품 금액 //model.totalValue = 0.0; // goodsValue + 총 서비스 수수료 //model.agencyFund = 0.0; // 수금액이 수금 순서 인 경우 수거 금액은 0보다 커야하며 비 수거는 0.0으로 설정되어야합니다. string BRANCH_CURR_UNIT = SettingsDatabase.GetCurrencyUnit(INVOICE.EST_CODE); // 지점 화폐단위 // items for (int i = 0; i < INVOICE.GoodsList.Count; i++) // 상품정보 { // 단가는 CNY로 변환한다 double UNIT_PRICE_CNY = ConfigDatabase.ExchangePrice( INVOICE.EST_CODE , BRANCH_CURR_UNIT , INVOICE.GoodsList[i].PRICE , INVOICE.CURRENCY_GOODS , "CNY" , CURRENCY_LIST ); YTOLocalItemsModel ITEM = new YTOLocalItemsModel(); ITEM.itemName = INVOICE.GoodsList[i].GOODS_NAME; // 상품명 ITEM.number = INVOICE.GoodsList[i].QTY; // 갯수 ITEM.itemValue = UNIT_PRICE_CNY; // 단가(CNY) model.ITEMS.Add(ITEM); } model.itemsWeight = INVOICE.GetWeightKG(); // 총중량(kg) //model.itemsValue = ISSUE.IssueDetails.Sum(m => m.QTY * m.PRICE); // 상품가격 model.itemsValue = model.ITEMS.Sum(m => m.number * m.itemValue); // 상품가격 //model.insuranceValue = 0.0; // 보험 금액의 금액 (보험 금액은 제품의 가치입니다 (100보다 크거나 같음 3w 미만), 기본값은 0.0입니다) //model.special = 0; // 제품 유형 (필드 유지, 일시적으로 보유하지 않음) //model.remark = ""; // 비고 //API_YTO_LOCAL YTOL = new API_YTO_LOCAL(API_YTO_LOCAL.YTO_APIType.TEST, "", ""); API_YTO_LOCAL YTOL = new API_YTO_LOCAL(API_YTO_LOCAL.YTO_APIType.REAL , API_INFO.CLIENT_ID , API_INFO.PARTNER_ID , "" , "" , API_INFO.ORDERTYPE ); // 주문등록 API YTOLocalResultModel RESULT = new YTOLocalResultModel(); if (!YTOL.OrderAdd(model, ref RESULT, ref error_str)) { return(""); } INVOICE.DELVNO = RESULT.mailNo; INVOICE.DELV_COM = "CN_YTO_LOCAL"; INVOICE.SDATA1 = RESULT.shortAddress; INVOICE.SDATA2 = RESULT.packageCenterCode; return(RESULT.mailNo); // YTO 송장번호 리턴 }