/// <summary> /// 设置支付企业代码和名称 /// </summary> /// <param name="payTypeSysNo">支付系统编号</param> /// <param name="gAOrder">海关总署订单报文</param> /// <remarks>2016-12-8 杨浩 创建</remarks> private GAOrder SetPayCodeAndPayName(int payTypeSysNo, GAOrder gAOrder) { switch (payTypeSysNo) { case 16: //钱袋宝 gAOrder.OrderHead.payCode = "110896T001"; gAOrder.OrderHead.payName = "北京钱袋宝支付技术有限公司"; break; } return(gAOrder); }
/// <summary> /// 上传订单至海关 /// </summary> /// <param name="orderId">订单编号</param> /// <param name="warehouseSysNo">仓库编号</param> /// <param name="customsLogInfo">海关日志</param> /// <param name="appType">报文类型 企业报送类型。1-新增 2-变更 3-删除。默认为1。</param> /// <returns></returns> /// <remarks>2016-6-4 杨浩 创建</remarks> private Result Upload(int orderId, int warehouseSysNo, SoCustomsOrderLog customsLogInfo, string appType = "1") { var result = new Result() { Status = false }; try { var order = BLL.Order.SoOrderBo.Instance.GetEntity(orderId); if (order == null) { result.Message = "该订单不存在"; return(result); } order.ReceiveAddress = BLL.Order.SoOrderBo.Instance.GetOrderReceiveAddress(order.ReceiveAddressSysNo); order.OrderItemList = DataAccess.Order.ISoOrderItemDao.Instance.GetOrderItemsByOrderSysNo(order.SysNo); var onlinePaymentFilter = new Hyt.Model.Parameter.ParaOnlinePaymentFilter() { OrderSysNo = orderId, Id = 1 }; var onlinePayments = Hyt.BLL.Finance.FinanceBo.Instance.GetOnlinePayments(onlinePaymentFilter).Rows; if (onlinePayments == null || (onlinePayments != null && onlinePayments.Count() <= 0)) { result.Status = false; result.Message = "订单没有支付单!"; return(result); } string orderNo = onlinePayments[0].BusinessOrderSysNo; if (string.IsNullOrEmpty(orderNo)) { result.Status = false; result.Message = "报关订单编号不能为空,请检查支付单字段 BusinessOrderSysNo"; return(result); } // 收货人 区 市 省 var receiverDistrict = BLL.Basic.BasicAreaBo.Instance.GetArea(order.ReceiveAddress.AreaSysNo); var receiverCity = BLL.Basic.BasicAreaBo.Instance.GetArea(receiverDistrict.ParentSysNo); var receiverProvince = BLL.Basic.BasicAreaBo.Instance.GetArea(receiverCity.ParentSysNo); // 发货人 市 var warehouse = BLL.Warehouse.WhWarehouseBo.Instance.GetWarehouse(warehouseSysNo); var shipperCity = BLL.Basic.BasicAreaBo.Instance.GetArea(warehouse.CitySysNo); var dealer = BLL.Distribution.DsDealerBo.Instance.GetDsDealer(order.DealerSysNo); var deliveryType = BLL.Logistics.DeliveryTypeBo.Instance.GetDeliveryType(order.DeliveryTypeSysNo); var CEBMessage = new CEB311Message(); CEBMessage.GAOrder = new List <GAOrder>(); CEBMessage.guid = System.Guid.NewGuid().ToString("D").ToUpper(); CEBMessage.version = "1.0"; var gaOrder = new GAOrder(); gaOrder.OrderHead = new OrderHead(); gaOrder.OrderHead.acturalPaid = order.CashPay.ToString();// (order.ProductAmount + order.ProductChangeAmount).ToString(); //recVoucher.ReceivedAmount.ToString(); gaOrder.OrderHead.appStatus = "2"; gaOrder.OrderHead.appTime = DateTime.Now.ToString("yyyyMMddHHmmss"); gaOrder.OrderHead.appType = appType;// "1"; gaOrder.OrderHead.batchNumbers = ""; gaOrder.OrderHead.buyerIdNumber = order.ReceiveAddress.IDCardNo; gaOrder.OrderHead.buyerIdType = "1"; gaOrder.OrderHead.buyerName = order.ReceiveAddress.Name; gaOrder.OrderHead.buyerRegNo = order.CustomerSysNo.ToString(); gaOrder.OrderHead.consignee = order.ReceiveAddress.Name; gaOrder.OrderHead.consigneeAddress = order.ReceiveAddress.StreetAddress; //gaOrder.OrderHead.consigneeDitrict = receiverDistrict.AreaCode; gaOrder.OrderHead.consigneeTelephone = order.ReceiveAddress.MobilePhoneNumber; gaOrder.OrderHead.currency = "142"; gaOrder.OrderHead.discount = order.OrderDiscountAmount.ToString(); gaOrder.OrderHead.ebcCode = EbcCode; //"44306609EP"; gaOrder.OrderHead.ebcName = EbcCode; //"广州华迅捷通电子商务有限公司"; gaOrder.OrderHead.ebpCode = EbcCode; gaOrder.OrderHead.ebpName = EbcName; gaOrder.OrderHead.freight = order.FreightAmount.ToString(); gaOrder.OrderHead.goodsValue = order.ProductAmount.ToString(); gaOrder.OrderHead.guid = System.Guid.NewGuid().ToString("D").ToUpper(); //gaOrder.OrderHead.note = ""; gaOrder.OrderHead.orderNo = orderNo;// order.SysNo.ToString(); gaOrder.OrderHead.orderType = "I"; gaOrder = SetPayCodeAndPayName(order.PayTypeSysNo, gaOrder); gaOrder.OrderHead.payTransactionId = onlinePayments[0].VoucherNo; // recVoucher.VoucherItems[0].VoucherNo; gaOrder.OrderHead.taxTotal = order.TaxFee.ToString(); // "0"; gaOrder.OrderList = new List <OrderList>(); int _gnum = 1; foreach (var item in order.OrderItemList) { var orderList = new OrderList(); #region 条形码商品 var RefProductName = item.ProductName; var RefProductSysNo = item.ProductSysNo; var RefProductQuantity = item.Quantity; BLL.Product.PdProductBo.Instance.RefProductQuantity(ref RefProductSysNo, ref RefProductQuantity, ref RefProductName, order.SysNo); #endregion //orderList.barCode = ""; orderList.country = "116"; orderList.currency = "142"; orderList.gnum = _gnum.ToString(); orderList.itemDescribe = ""; //orderList.itemName = item.ProductName; //orderList.itemNo = item.ProductSysNo.ToString();// ""; orderList.itemName = RefProductName; orderList.itemNo = RefProductSysNo.ToString(); //orderList.note = ""; orderList.price = item.SalesUnitPrice.ToString(); //orderList.qty = item.Quantity.ToString(); orderList.qty = RefProductQuantity.ToString(); orderList.totalPrice = (item.SalesAmount + item.ChangeAmount).ToString(); orderList.unit = "007"; gaOrder.OrderList.Add(orderList); _gnum++; } CEBMessage.GAOrder.Add(gaOrder); CEBMessage.BaseTransfer = new BaseTransfer(); //CEBMessage.BaseTransfer.copCode = EbcCode; //CEBMessage.BaseTransfer.copName = EbcName; CEBMessage.BaseTransfer.copCode = EbcCode; CEBMessage.BaseTransfer.copName = EbcName; // 电子口岸固定DXP CEBMessage.BaseTransfer.dxpId = DxpId;// "DXPENTTEST510001"; CEBMessage.BaseTransfer.dxpMode = "DXP"; //CEBMessage.BaseTransfer.note = ""; XmlSerializerNamespaces xmlNs = new XmlSerializerNamespaces(); xmlNs.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance"); xmlNs.Add("nousexmlns", "http://www.chinaport.gov.cn/ceb"); string xmlData = this.XmlSerialize <CEB311Message>(CEBMessage, xmlNs); xmlData = xmlData.Replace(":nousexmlns", ""); xmlData = xmlData.Replace("encoding=\"utf-16\"", "encoding=\"UTF-8\""); // 上传文件 var ftp = new FtpUtil(FTPUri, FTPName, FTPPassword); string ftpResponse = ""; var random = new Random(); string fileName = "GZEPORT_" + FTPName + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + random.Next(10000, 100000).ToString() + ".xml"; ftp.UploadFile(FTPUri + FolderIn, fileName, Encoding.UTF8.GetBytes(xmlData), out ftpResponse); #region 海关推送日志 var customsOrderLog = new SoCustomsOrderLog(); if (customsLogInfo != null) { customsOrderLog = customsLogInfo; } customsOrderLog.Packets = xmlData; customsOrderLog.StatusCode = appType; if (appType == "1")//1-新增 2-变更 3-删除 { customsOrderLog.StatusMsg = "新增中"; } else if (appType == "2") { customsOrderLog.StatusMsg = "变更中"; } else if (appType == "3") { customsOrderLog.StatusMsg = "删除中"; } customsOrderLog.LastUpdateBy = 0; if (BLL.Authentication.AdminAuthenticationBo.Instance.IsLogin) { customsOrderLog.LastUpdateBy = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo; } customsOrderLog.LastUpdateDate = DateTime.Now; customsOrderLog.CreateDate = DateTime.Now; customsOrderLog.CreatedBy = customsOrderLog.LastUpdateBy; customsOrderLog.ReceiptContent = ""; customsOrderLog.FileName = fileName; customsOrderLog.OrderSysNo = orderId; customsOrderLog.CustomsChannel = (int)this.Code; customsOrderLog.StatusCode = appType; if (customsLogInfo == null) { BLL.Order.SoCustomsOrderLogBo.Instance.AddCustomsOrderLog(customsOrderLog); } else { BLL.Order.SoCustomsOrderLogBo.Instance.UpdateCustomsOrderLog(customsOrderLog); } BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)Hyt.Model.WorkflowStatus.OrderStatus.海关报关状态.处理中, 2, orderId); #endregion result.Status = true; result.Message = "提交成功!"; } catch (Exception ex) { result.Status = false; result.Message = ex.Message; } return(result); }