/// <summary> /// 导入收款单据 /// </summary> /// <param name="model">收款明细</param> /// <param name="receivingType">收款单类型(5:商品收款单;10:服务收款单)</param> /// <param name="customer">往来账客户编号</param> /// <param name="isUpgrades">是否为升舱</param> /// <param name="description">单据摘要(请备注订单号、会员名称、收款仓库(在线支付订单:备注商城、升舱:备注淘宝))</param> /// <param name="flowIdentify"></param> /// <returns></returns> /// <remarks>2013-9-25 杨浩 创建</remarks> public Model.Result Receiving(List <Model.Receiving.ReceivingInfo> model, 收款单类型 receivingType, string customer, bool isUpgrades, string description, string flowIdentify) { //var status = XingYeCore.Instance.ReceivingBillFacade(model, receivingType, customer, description, flowIdentify,null, false, false); //return status; return(new Result { Message = Model.EasConstant.EAS_MESSAGE_CLOSE, Status = false }); }
/// <summary> /// 导入收款单据 /// </summary> /// <param name="model">收款明细</param> /// <param name="receivingType">收款单类型(5:商品收款单;10:服务收款单)</param> /// <param name="customer">往来账客户编号</param> /// <param name="isUpgrades">是否为升舱</param> /// <param name="description">单据摘要(请备注订单号、会员名称、收款仓库(在线支付订单:备注商城、升舱:备注淘宝))</param> /// <param name="flowIdentify"></param> /// <returns></returns> /// <remarks>2013-9-25 杨浩 创建</remarks> public Result Receiving(List <ReceivingInfo> model, 收款单类型 receivingType, string customer, bool isUpgrades, string description, string flowIdentify) { var status = XingYeCore.ReceivingBillFacade(0, model, receivingType, customer, description, flowIdentify); return(status); }
/// <summary> /// 导入收款单据 /// </summary> /// <param name="easSysNo"></param> /// <param name="model"></param> /// <param name="receivingType">收款单类型(5:商品收款单;10:服务收款单)</param> /// <param name="customer">送货客户(商城客户:3003999997(如果为升舱订单 客服编号就要对应))</param> /// <param name="flowIdentify"></param> /// <param name="dataMd5"></param> /// <param name="isAgain">是否开始同步</param> /// <param name="description"></param> /// <param name="enableEas">是否启用Eas</param> /// <param name="isData">是否只取xml数据</param> /// <returns>Result</returns> /// <remarks>2013-9-25 杨浩 创建</remarks> public static Result <string> ReceivingBillFacade(int easSysNo, List <ReceivingInfo> model, 收款单类型 receivingType, string customer, string description, string flowIdentify, string dataMd5 = null, bool isAgain = false, bool enableEas = true, bool isData = false) { var name = (receivingType == 收款单类型.退销售回款 ? "导入付款单" : "导入收款单"); var watch = new Stopwatch(); watch.Start(); var result = new Eas.ReceivingBillFacade.Result(); string sessionId = ""; #region 数据初始 var datajson = new ReceivingInfoWraper { Model = model, Description = description, Customer = customer, ReceivingType = receivingType }.ToJson(); var firstModel = model.FirstOrDefault(); var organizationCode = firstModel != null ? firstModel.OrganizationCode : string.Empty; //组织架构 var payeeAccount = firstModel != null ? firstModel.PayeeAccount : string.Empty; //收款科目 int warehouseSysNo = firstModel != null ? firstModel.WarehouseSysNo : 0; //仓库编号 decimal voucherAmount = model.Sum(q => q.Amount); if (receivingType == 收款单类型.退销售回款) { voucherAmount = -voucherAmount; } var billHead = new Model.Receiving.BillHead { number = "SK" + Number, company = "30", //品牌管理有限公司 creator = _userName, createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), lastUpdateUser = _userName, lastUpdateTime = DateTime.Now.ToString(dateFormater), bizdate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), handler = _userName, description = description, auditor = _userName, //recbilltype = 100, //销售回款 //paymenttype = "002", //赊销 fundtype = (receivingType == 收款单类型.商品收款单 || receivingType == 收款单类型.退销售回款) ? "100" : "101", //现金=100,银行=101,其他=102 rectype = (receivingType == 收款单类型.商品收款单) ? "100" : ((receivingType == 收款单类型.退销售回款) ? "102" : "999"), //收款类型 销售回款(应收系统)=100,,其他(出纳系统)=999 currency = "RMB", actrecamt = 0, //0表头自动计算 actreclocamt = 0, //0表头自动计算 exchangerate = 1, payeeaccount = payeeAccount, //收款科目 payeeaccountbank = firstModel != null ? firstModel.PayeeAccountBank : string.Empty, //收款账户,支付宝,网银需传入 settlementtype = firstModel != null ? firstModel.SettlementType : string.Empty, //结算方式 需hyt对应(对应)01:现金 biztype = string.Empty, payeebank = string.Empty, settlementnumber = string.Empty, adminorgunit = GetOrganizeCode(organizationCode), //组织架构 person = firstModel != null ? firstModel.WarehouseNumber : string.Empty, //仓库编码 oppaccount = string.Empty, costcenter = string.Empty, oppbgitemnumber = string.Empty, payertype = "00001", //客户 payernumber = customer, //商城客户 payerbank = string.Empty, payeraccountbank = string.Empty, sourcebillid = string.Empty, sourcefunction = string.Empty, auditdate = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), billstatus = "10", //保存=10,已提交=11,已审批=12,已收款=14,已付款=15,审批中=6,已审核=8 sourcebilltype = string.Empty, sourcesystype = (receivingType == 收款单类型.商品收款单 || receivingType == 收款单类型.退销售回款) ? "100" : "103", //100:应收系统,103:出纳系统 sourcetype = (receivingType == 收款单类型.商品收款单 || receivingType == 收款单类型.退销售回款) ? "100" : "103", //100:应收系统,103:出纳系统 baseStatus = 14 //保存=10,已提交=11(提交即审核) 14=收款状态 }; var billEntries = model.Select((q, i) => new Model.Receiving.entry { seq = 1 + i, recbilltype = (receivingType == 收款单类型.商品收款单) ? 100 : 0, //100:销售回款(应收系统需要) amount = (receivingType == 收款单类型.退销售回款) ? -q.Amount : q.Amount, localamt = (receivingType == 收款单类型.退销售回款) ? -q.Amount : q.Amount, rebate = 0, rebatelocamt = 0, actualamt = (receivingType == 收款单类型.退销售回款) ? -q.Amount : q.Amount, actuallocamt = (receivingType == 收款单类型.退销售回款) ? -q.Amount : q.Amount, remark = q.Remark, corebilltype = (receivingType == 收款单类型.商品收款单) ? 102 : 0, //102:销售出库单(应收系统需要) corebillnumber = string.Empty, corebillentryseq = string.Empty, project = string.Empty, tracknumber = string.Empty, contractnum = string.Empty, contractentryseq = string.Empty, lockamt = 0, //结算状态为收款金额 //unlockamt = q.Amount, //未结算状态为收款金额 amountvc = 0, localamtvc = 0, //unvcamount = q.Amount, //未结算状态为收款金额 //unvclocamount = q.Amount, //未结算状态为收款金额 matchedamount = 0, matchedamountloc = 0, oppaccount = string.Empty, oppbgitemname = string.Empty, ck = (payeeAccount == EasConstant.PayeeAccount?EasConstant.HytWharehouse: q.WarehouseNumber), //仓库Eas编号 }).ToList(); var data = new ReceivingBill { billHead = billHead, billEntries = billEntries, thirdSysBillID = dataMd5 ?? Helper.MD5Encrypt(datajson), checkDuplicate = "true" }; //按照Eas格式,去掉xmlns和空格 string xml = Helper.XmlSerialize(data) .Replace(xsi, "") .Replace(xsd, "") .Replace("utf-16", "UTF-8") .Trim(); if (isData) { return(new Result <string> { Data = xml }); } #endregion #region 调用外部Eas接口 #region 检查基础资料是否完备 string message = EasConstant.Information + ":"; bool isFull = true; if (string.IsNullOrEmpty(billHead.payeeaccount)) { message += " 收款科目为空"; isFull = false; } //仅在收款科目为1002开头时才是必录项 if (!string.IsNullOrEmpty(billHead.payeeaccount) && billHead.payeeaccount.StartsWith("1002")) { if (string.IsNullOrEmpty(billHead.payeeaccountbank)) { message += " 收款账户为空"; isFull = false; } } if (string.IsNullOrEmpty(billHead.adminorgunit)) { message += " 部门为空"; isFull = false; } if (string.IsNullOrEmpty(billHead.person)) { message += " 人员为空"; isFull = false; } #endregion 步状态 status; if (enableEas && isAgain && isFull) { try { var context = ErpLogin(); sessionId = context.sessionId; var client = new Eas.ReceivingBillFacade.WSReceivingBillFacadeSrvProxyService { Timeout = Settings.Default.Timeout, SessionId = new SoapUnknownHeader { Element = GetSessionHeader(sessionId) } }; if (sessionId != null) { result = client.importData(xml); } status = result.status ? 步状态.成功 : 步状态.失败; } catch (Exception e) { result.message = e.Message; result.status = false; status = 步状态.失败; } } else { if (enableEas) { result.message = isFull ? Model.EasConstant.EAS_WAIT : message; } else { result.message = 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 }; //记录日志 var sysno = WriteLog(datajson, resultData, watch, name, 接口类型.收款单据导入, warehouseSysNo, description, flowIdentify, voucherAmount, status, isAgain); easSysNo = sysno == 0 ? easSysNo : sysno; //临时记录 检查是否重复 var content = " 订单编号:" + description + " 会话ID:" + sessionId + " 外部编号:" + data.thirdSysBillID + " 请求时间:" + billHead.lastUpdateTime + " 返回结果:" + (result.status ? result.data : result.message) + " 返回状态:" + result.status + "," + result.statusCode + " ElapseTime:" + watch.ElapsedMilliseconds; WriteLog(easSysNo, content, billHead.createtime, isAgain); return(resultData); }