/// <summary> /// 获取Kis同步数据 /// </summary> /// <param name="model">Kis</param> /// <returns></returns> /// <remarks>2013-9-27 杨浩 添加</remarks> public Result <string> GetData(CBLiJiaSyncLog model) { var easModel = new Hyt.Model.LiJiaSyncLog { SysNo = model.SysNo, Data = model.Data, DataMd5 = model.DataMd5 }; var iType = (接口类型)(model.InterfaceType); var result = new Result <string> { }; switch (iType) { case 接口类型.配送员借货还货: var borrow = model.Data.ToObject <BorrowInfoWraper>(); result = LiJiaCore.OtherIssueBillFacade(borrow.Model, borrow.Type, borrow.Description, "", model.DataMd5, true, true, true); break; case 接口类型.销售出库退货: //var sale = model.Data.ToObject<SaleInfoWraper>(); result = LiJiaCore.SaleIssueBillFacade(easModel, false, true, true, true); break; case 接口类型.收款单据导入: var receiving = model.Data.ToObject <ReceivingInfoWraper>(); result = LiJiaCore.ReceivingBillFacade(0, receiving.Model, receiving.ReceivingType, receiving.Customer, receiving.Description, "", model.DataMd5, true, true, true); break; } return(result); }
/// <summary> /// 记录日志 /// </summary> /// <param name="datajson">同步数据</param> /// <param name="result">返回结果</param> /// <param name="watch">同步耗时</param> /// <param name="name">接口名称</param> /// <param name="interfaceType">接口类型</param> /// <param name="warehouseSysNo">仓库编号</param> /// <param name="remarks">记录商城原单据</param> /// <param name="flowIdentify">流程编号</param> /// <param name="voucherAmount">单据金额</param> /// <param name="status">同步状态</param> /// <param name="isAgain">是否开始同步</param> /// <remarks>2013-10-24 杨浩 创建</remarks> private static int WriteLog(string datajson, Result <string> result, Stopwatch watch, string name, 接口类型 interfaceType, int warehouseSysNo, string remarks, string flowIdentify, decimal voucherAmount, 步状态 status, bool isAgain) { //是否为自动同步 if (isAgain) { return(0); } //是否为自营 if (!IsSelfSupport(warehouseSysNo)) { return(0); } int elapsedMilliseconds = 0; string message = string.Empty; var dataMd5 = Helper.MD5Encrypt(datajson); var isImport = Hyt.DataAccess.Sys.ILiJiaDao.Instance.IsImport(dataMd5); if (isImport) { return(0); } elapsedMilliseconds = (int)watch.ElapsedMilliseconds; message = result.Message != null ? (result.Message.Length > 500 ? result.Message.Substring(0, 500) : result.Message) : string.Empty; var log = new Hyt.Model.LiJiaSyncLog() { VoucherNo = result.Data, CreatedDate = DateTime.Now, Data = datajson, DataMd5 = dataMd5, ElapsedTime = elapsedMilliseconds, InterfaceType = (int)interfaceType, Message = message, Name = name, Status = (int)status, StatusCode = result.StatusCode, CreatedBy = Hyt.Model.SystemPredefined.User.SystemUser, Remarks = remarks, FlowIdentify = flowIdentify, FlowType = (接口类型.配送员借货还货 == interfaceType ? 20 : 10), LastupdateDate = DateTime.Now, WarehouseSysNo = warehouseSysNo, VoucherAmount = voucherAmount, LastsyncTime = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue, }; return(Hyt.DataAccess.Sys.ILiJiaDao.Instance.LiJiaSyncLogCreate(log)); }
/// <summary> /// 销售退货 /// </summary> /// <param name="model">退货明细</param> /// <param name="customer">分销商erp编号</param> /// <param name="description">单据摘要(商城订单号/升舱订单号)</param> /// <param name="flowIdentify"></param> /// <returns></returns> /// <remarks>2013-9-27 杨浩 添加</remarks> public Result SaleInStock(List <SaleInfo> model, string customer, string description, string flowIdentify) { var datajson = new SaleInfoWraper { Model = model, Type = 出库状态.退货, Customer = customer, Description = description }.ToJson(); var easModel = new Hyt.Model.LiJiaSyncLog { Data = datajson, FlowIdentify = flowIdentify }; var status = LiJiaCore.SaleIssueBillFacade(easModel); return(status); }
/// <summary> /// 销售出库、退货 /// </summary> /// <param name="easModel">Kis数据</param> /// <param name="isSave">是否保存为提交状态</param> /// <param name="isAgain">是否重新导入</param> /// <param name="enableEas">是否启用Kis</param> /// <param name="isData">是否只取xml数据</param> /// <returns>Result</returns> /// <remarks>2013-9-22 杨浩 创建</remarks> public static Result <string> SaleIssueBillFacade(Hyt.Model.LiJiaSyncLog easModel, bool isSave = false, bool isAgain = false, bool enableEas = true, bool isData = false) { var sale = easModel.Data.ToObject <SaleInfoWraper>(); List <SaleInfo> model = sale.Model; 出库状态 type = sale.Type; string customer = sale.Customer; string description = sale.Description; string flowIdentify = easModel.FlowIdentify; string dataMd5 = easModel.DataMd5; var name = 出库状态.出库 == type ? "销售出库" : "销售退货"; var watch = new Stopwatch(); watch.Start(); var result = new Eas.SaleIssueBillFacade.Result(); #region 数据初始 var firstModel = model.FirstOrDefault(); int warehouseSysNo = firstModel != null ? firstModel.WarehouseSysNo : 0; //仓库编号 decimal voucherAmount = model.Sum(q => q.Amount); var organizationCode = firstModel != null ? firstModel.OrganizationCode : string.Empty; //组织架构 if (出库状态.退货 == type) { voucherAmount = -voucherAmount; } if (firstModel.WarehouseNumber.Contains("-")) { firstModel.WarehouseNumber = firstModel.WarehouseNumber.Split('-')[0]; } var saleInfo = model.FirstOrDefault(); string billNo = "XSCK" + (saleInfo.ItemID ?? 0) + easModel.FlowIdentify; var request = new StockOutAddRequset() { FBillNo = billNo, FEntryID = "0", Fdate = DateTime.Now.ToString("yyyy-MM-dd"), FConsignee = _userName, FDeptID = "", FEmpID = organizationCode, FExplanation = "", FFetchAdd = "", FFManagerID = "", FSaleStyle = "线上电商平台", FSManagerID = "", FCustID = string.IsNullOrWhiteSpace(saleInfo.DeliveryCustomer) ? config.FCustID : saleInfo.DeliveryCustomer,// "01.001.003", FDCStockID = firstModel.WarehouseNumber, FROB = 出库状态.出库 == type?"1":"-1", }; request.item = model.Select((q, i) => new JsonItem() { FItemID = q.ErpCode, Fauxqty = q.Quantity.ToString(), FItemName = "", FDCStockID = q.WarehouseNumber.Contains("-") ? q.WarehouseNumber.Split('-')[0] : q.WarehouseNumber, FUnitID = config.FUnitID,// "ping", FConsignPrice = decimal.Round(q.Amount / q.Quantity, 2).ToString("0.00"), FConsignAmount = q.Amount.ToString("0.00"), FDiscountAmount = q.DiscountAmount.ToString("0.00"), }).ToList(); string json = request.ToJson(); var datajson = new SaleInfoWraper { Model = model, Type = type, Customer = customer, Description = description }.ToJson(); if (isData) { return(new Result <string> { Data = json }); } #endregion #region 调用利嘉接口 步状态 status = 步状态.等待同步; if (enableEas && isAgain) { try { using (var service = new Pisen.Framework.Service.Proxy.ServiceProxy <Grand.Platform.Api.Contract.IErpService>()) { var response = service.Channel.LiJiaStockOutAdd(request); status = !response.IsError ? 步状态.成功 : 步状态.失败; result.status = !response.IsError; result.message = response.ErrMsg; result.statusCode = response.ErrCode; result.data = response.FBillNo; //_result.Data != null && _result.Data.Count > 0 ? _result.Data.First().OutFBillNo : ""; } } catch (Exception e) { result.message = e.Message; result.status = false; status = 步状态.失败; } } else { result.message = enableEas ? Model.EasConstant.EAS_WAIT : Model.EasConstant.EAS_MESSAGE_CLOSE; result.status = false; status = 步状态.等待同步; } #endregion watch.Stop(); var resultData = new Result <string> { Data = (result.data != null ?result.data.ToString() :""), Status = result.status, StatusCode = result.statusCode, Message = result.message }; //记录日志 int sysno = WriteLog(datajson, resultData, watch, name, 接口类型.销售出库退货, warehouseSysNo, description, flowIdentify, voucherAmount, status, isAgain); easModel.SysNo = sysno == 0 ? easModel.SysNo : sysno; //临时记录 检查是否重复 var content = " 订单编号:" + description + " 外部编号:" + request.FBillNo + " 请求时间:" + request.Fdate + " 返回结果:" + (result.status?result.data:result.message) + " 返回状态:" + result.status + "," + result.statusCode + " ElapseTime:" + watch.ElapsedMilliseconds; WriteLog(easModel.SysNo, content, request.Fdate, isAgain); return(resultData); }