private void VerifyCancelAbandon(CollectionPaymentInfo entity) { //VendorSettleDAL dal; Verfy(entity); //1 检查当前结算单状态 if (entity.Status.Value != POCollectionPaymentSettleStatus.Abandon) { throw new BizException("当前结算单的状态不为已作废状态!"); } //2 检查当前作废的item是否已存在于其他结算单据中 //dal = new VendorSettleDAL(); foreach (CollectionPaymentItem item in entity.SettleItems) { bool tmpIsExist = this.ConsignSettlementDA.IsAccountLogExistOtherVendorSettle(item.ConsignToAccLogInfo.LogSysNo.Value); if (tmpIsExist) { throw new BizException( string.Format("当前商品(财务记录编号:{0})已存在于其他供应商结算单中!", (item.ConsignToAccLogInfo.LogSysNo.HasValue ? item.POConsignToAccLogSysNo.Value.ToString() : "")) ); } } }
/// <summary> /// 取消审核代销结算单 /// </summary> /// <param name="consignInfo"></param> /// <param name="callback"></param> public void CancelAudited(CollectionPaymentInfo consignInfo, EventHandler <RestClientEventArgs <object> > callback) { consignInfo.CompanyCode = CPApplication.Current.CompanyCode; string relativeUrl = "POService/CollectionPayment/CancelAudited"; restClient.Update(relativeUrl, consignInfo, callback); }
private void Verfy(CollectionPaymentInfo entity) { if (entity == null) { throw new ArgumentNullException("entity"); } }
/// <summary> /// 创建代销结算单 /// </summary> /// <param name="info"></param> /// <param name="callback"></param> public void CreateConsignSettlement(CollectionPaymentInfo consignInfo, EventHandler <RestClientEventArgs <CollectionPaymentInfo> > callback) { consignInfo.CompanyCode = CPApplication.Current.CompanyCode; consignInfo.CreateUserSysNo = CPApplication.Current.LoginUser.UserSysNo; string relativeUrl = "POService/CollectionPayment/Create"; restClient.Create <CollectionPaymentInfo>(relativeUrl, consignInfo, callback); }
/// <summary> /// 作废 /// </summary> /// <param name="consignInfo"></param> /// <param name="callback"></param> public void Abandon(CollectionPaymentInfo consignInfo, EventHandler <RestClientEventArgs <object> > callback) { consignInfo.CompanyCode = CPApplication.Current.CompanyCode; consignInfo.CreateUserSysNo = CPApplication.Current.LoginUser.UserSysNo; string relativeUrl = "POService/CollectionPayment/Abandon"; restClient.Update(relativeUrl, consignInfo, callback); }
public CollectionPaymentInfo Load(string sysNo) { int getSysNoParam = 0; int.TryParse(sysNo, out getSysNoParam); CollectionPaymentInfo result = ObjectFactory <CollectionPaymentAppService> .Instance.Load(getSysNoParam); return(result); }
private void VerifyUpdate(CollectionPaymentInfo entity) { VerifyCreate(entity); if (!entity.SysNo.HasValue) { throw new BizException("当前结算单的状态不为已审核状态!"); } }
/// <summary> /// 验证用到的规则结算数量是否超过设定 /// </summary> /// <param name="entity">请求的结算单</param> void VerityOverConsignRuleQuantity(CollectionPaymentInfo entity) { var overRule = GetOverConsignRule(entity); if (overRule != null) { throw new BizException("规则结算数量超过设定"); } }
private void VerifyAbandon(CollectionPaymentInfo entity) { Verfy(entity); //1 检查当前结算单状态 if (entity.Status.Value != POCollectionPaymentSettleStatus.Origin) { throw new BizException("当前结算单的状态不为待审核状态!"); } }
private void VerifyCancelAudited(CollectionPaymentInfo entity) { Verfy(entity); //1 检查当前结算单状态 if (entity.Status.Value != POCollectionPaymentSettleStatus.Audited) { throw new BizException("不是审核状态不能作废"); } }
/// <summary> /// 加载代销结算单详细 /// </summary> /// <param name="settlementSysNo"></param> /// <returns></returns> public virtual CollectionPaymentInfo Load(int sysNo) { //加载代销结算单主信息: CollectionPaymentInfo returnEntity = new CollectionPaymentInfo(); returnEntity = CollectionPaymentDA.Load(sysNo); return(returnEntity); }
private void VerifySettle(CollectionPaymentInfo entity) { Verfy(entity); //1 检查当前结算单状态 if (entity.Status.Value != POCollectionPaymentSettleStatus.Audited) { throw new BizException("当前结算单的状态不为已审核状态!"); } }
private void VerifyCreate(CollectionPaymentInfo entity) { Verfy(entity); //1 检查当前结算单状态 if (entity.Status.HasValue) { if (entity.Status != POCollectionPaymentSettleStatus.Origin) { throw new BizException("当前结算单的状态不为待审核状态!"); } } //3 检查settleItems是否为0 if (entity.SettleItems.Count == 0) { throw new BizException("结算单条目不能为空!"); } //4 供应商是否为空 if (!entity.VendorInfo.SysNo.HasValue) { throw new BizException("供应商不能为空!"); } //5 税率是否为空 if (!entity.TaxRateData.HasValue) { throw new BizException("税率不能为空!"); } //6 仓库编号是否为空 if (entity.SourceStockInfo == null || !entity.SourceStockInfo.SysNo.HasValue) { //新增存在多个仓库,不会对此进行判断 if (entity.SysNo.HasValue) { //仓库编号不能为空 throw new BizException(GetMessageString("Consign_StockSysNoIsEmpty")); } } //7 货币是否为空 if (!entity.CurrencyCode.HasValue) { throw new BizException("货币类型不能为空!"); } }
private void btnSave_Click(object sender, RoutedEventArgs e) { #region [验证] if (!ValidationManager.Validate(this)) { return; } if (this.consignSettleVM.SettleItems.Where(x => x.SettleSysNo != -1).Count() <= 0) { Window.Alert("请先选择结算商品!"); return; } #endregion //保存操作 CollectionPaymentInfo getSettlementInfo = BuildActionEntity(); Window.Confirm(ResConsignMaintain.ConfirmMsg_Save, (obj, args) => { if (args.DialogResult == DialogResultType.OK) { //保存PM高级权限,用于业务端验证 getSettlementInfo.IsManagerPM = AuthMgr.HasFunctionAbsolute(AuthKeyConst.PO_SeniorPM_Query); //代销商品规则检测 getSettlementInfo.SettleItems.ForEach(item => { if (item.SettleRuleSysNo.HasValue && item.Cost != item.SettlePrice) { item.SettleRuleSysNo = null; item.SettleRuleName = null; } }); serviceFacade.Update(getSettlementInfo, (obj2, args2) => { if (args2.FaultsHandle()) { return; } Window.Alert(ResConsignMaintain.InfoMsg_Title, ResConsignMaintain.InfoMsg_SaveSuccess, MessageType.Information, (obj3, args3) => { if (args3.DialogResult == DialogResultType.Cancel) { Window.Refresh(); return; } }); }); } }); }
public CollectionPaymentInfo Abandon(CollectionPaymentInfo entity) { string OperationIP = entity.OperationIP; int? OperationUserSysNumber = entity.OperationUserSysNumber; string OperationUserUniqueName = entity.OperationUserUniqueName; entity.CreateUserSysNo = entity.CurrentUserSysNo; VerifyAbandon(entity); entity.Status = POCollectionPaymentSettleStatus.Abandon; //将代销转财务记录的状态修改为初始状态 foreach (var item in entity.SettleItems) { item.ConsignToAccLogInfo.ConsignToAccStatus = ConsignToAccountLogStatus.Origin; } entity.Note = string.Format("当前结算单已被{0}在{1}作废", "SysAdmin", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); using (TransactionScope scope = new TransactionScope()) { entity = this.CollectionPaymentDA.UpdateVendorSettleStatus(entity); //更新代销转财务记录状态 UpdateConsignToAccLogStatus(entity); //发送ESB消息 EventPublisher.Publish <CollectionPaymentAbandonMessage>(new CollectionPaymentAbandonMessage() { CurrentUserSysNo = ServiceContext.Current.UserSysNo, SysNo = entity.SysNo.Value }); scope.Complete(); } entity.OperationIP = OperationIP; entity.OperationUserSysNumber = OperationUserSysNumber; entity.OperationUserUniqueName = OperationUserUniqueName; //CommonService.WriteLog<CollectionPaymentEntity>(entity, " Abandon CollectionPayment ", entity.SysNo.Value.ToString(), (int)LogType.CollectionPayment_Abandon); ExternalDomainBroker.CreateLog(" Abandon CollectionPayment " , BizEntity.Common.BizLogType.POC_VendorSettle_Abandon , entity.SysNo.Value , entity.CompanyCode); return(entity); }
public CollectionPaymentInfo Load(int vendorSettleSysNo) { CollectionPaymentInfo settle = new CollectionPaymentInfo(); CustomDataCommand command = DataCommandManager.CreateCustomDataCommandFromConfig("GetCollVendorSettleBySysNo"); using (DynamicQuerySqlBuilder builder = new DynamicQuerySqlBuilder(command.CommandText, command, null, "Settle.SysNo DESC")) { HasPMRight(builder); builder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "Settle.SysNo", DbType.Int32, "@SettleSysNo", QueryConditionOperatorType.Equal, vendorSettleSysNo); ProviderHelper.SetCommonParams(builder, "Settle"); command.CommandText = builder.BuildQuerySql(); } settle = command.ExecuteEntity <CollectionPaymentInfo>(); if (settle != null) { DataCommand commandItem = DataCommandManager.GetDataCommand("GetCollVendorSettleItemsBySysNo"); commandItem.SetParameterValue("@SettleSysNo", vendorSettleSysNo); ProviderHelper.SetCommonParams(commandItem); settle.SettleItems = commandItem.ExecuteEntityList <CollectionPaymentItem>(); settle.SettleItems.ForEach(x => { x.ConsignToAccLogInfo.RateMargin = x.ConsignToAccLogInfo.SalePrice - x.ConsignToAccLogInfo.Cost; x.ConsignToAccLogInfo.CountMany = x.ConsignToAccLogInfo.ProductQuantity * x.ConsignToAccLogInfo.Cost; x.ConsignToAccLogInfo.RateMarginTotal = x.ConsignToAccLogInfo.RateMargin * x.ConsignToAccLogInfo.ProductQuantity; x.ConsignToAccLogInfo.LogSysNo = x.POConsignToAccLogSysNo; x.Cost = x.ConsignToAccLogInfo.Cost.Value; }); } return(settle); }
private void UpdateConsignToAccLogStatus(CollectionPaymentInfo entity) { foreach (var item in entity.SettleItems) { if (!item.ConsignToAccLogInfo.LogSysNo.HasValue || !item.ConsignToAccLogInfo.ConsignToAccStatus.HasValue) { throw new InvalidOperationException("POConsignToAccLogSysNo 或者 ConsignToAccStatus不能为空"); } } foreach (var item in entity.SettleItems) { this.ConsignSettlementDA.UpdateConsignToAccountLogStatus( item.POConsignToAccLogSysNo.Value, item.ConsignToAccLogInfo.ConsignToAccStatus.Value); } }
public CollectionPaymentInfo Create(CollectionPaymentInfo entity) { DataCommand command = DataCommandManager.GetDataCommand("CreateCollVendorSettle"); command.SetParameterValue("@SysNo", entity.SysNo); command.SetParameterValue("@SettleID", entity.SettleID); command.SetParameterValue("@VendorSysNo", entity.VendorInfo.SysNo); command.SetParameterValue("@StockSysNo", entity.SourceStockInfo.SysNo); command.SetParameterValue("@TotalAmt", entity.TotalAmt); command.SetParameterValue("@CurrencySysNo", entity.CurrencyCode); command.SetParameterValue("@CreateTime", entity.CreateTime); command.SetParameterValue("@CreateUserSysNo", entity.CreateUserSysNo); command.SetParameterValue("@Memo", entity.Memo); command.SetParameterValue("@Note", entity.Note); command.SetParameterValue("@Status", entity.Status); //command.SetParameterValue("@SettleBalanceSysNo", entity.SettleBalanceSysNo); decimal taxRate = (decimal)((int)entity.TaxRateData.Value / 100.0); command.SetParameterValue("@TaxRate", taxRate); //////////////////////////////CLR16063////////////////////////////// //command.SetParameterValue("@UsingReturnPoint", entity.UsingReturnPoint); //command.SetParameterValue("@PM_ReturnPointSysNo", entity.PM_ReturnPointSysNo); command.SetParameterValue("@PMSysno", entity.PMInfo.SysNo); //command.SetParameterValue("@ReturnPointC3SysNo", entity.ReturnPointC3SysNo); //////////////////////////////////////////////////////////////////// CommonHelper.SetCommonParams(command); entity.SysNo = System.Convert.ToInt32(command.ExecuteScalar()); entity.SettleID = "V" + entity.SysNo.ToString().PadLeft(9, '0'); if (entity.SettleItems != null && entity.SettleItems.Count > 0) { foreach (CollectionPaymentItem item in entity.SettleItems) { if (item.SettleSysNo != -1) { item.SettleSysNo = entity.SysNo.Value; CreateSettleItem(item); } } } return(entity); }
private void VerifyCancelSettled(CollectionPaymentInfo entity) { Verfy(entity); //1 检查当前结算单状态 if (entity.Status.Value != POCollectionPaymentSettleStatus.Settled) { throw new BizException("当前结算单的状态不为已结算状态!"); } //2 检查付款单是否作废,如果付款单未作废抛出异常 //dal = collVendorSettleDAL; if (!this.CollectionPaymentDA.IsAbandonPayItem(entity.SysNo.Value)) { throw new BizException("当前结算单对应的应付款记录应全部为“已作废”状态!"); } }
private void btnCancelAudit_Click(object sender, RoutedEventArgs e) { // 取消审核操作: Window.Confirm(ResConsignMaintain.InfoMsg_Title, ResConsignMaintain.ConfirmMsg_Confirm, (obj, args) => { if (args.DialogResult == DialogResultType.OK) { CollectionPaymentInfo getSettlementInfo = BuildActionEntity(); serviceFacade.CancelAudited(getSettlementInfo, (obj2, args2) => { if (args2.FaultsHandle()) { return; } AlertAndRefreshPage(ResConsignMaintain.InfoMsg_OperationSuccess); }); } }); }
protected override void PreCheckForCreate(PayItemInfo entity) { base.PreCheckForCreate(entity); CollectionPaymentInfo collectionSettlement = ExternalDomainBroker.GetCollectionPaymentInfo(entity.OrderSysNo.Value); if (collectionSettlement == null) { ThrowBizException("PayItem_OrderNotExisitsFormat", entity.OrderSysNo); } //填写代收结算单上的CompanyCode为付款单CompanyCode entity.CompanyCode = collectionSettlement.CompanyCode; entity.OrderStatus = (int?)collectionSettlement.Status; if (collectionSettlement.Status == POCollectionPaymentSettleStatus.Settled) { if (entity.PayStyle != PayItemStyle.Normal) { ThrowBizException("PayItem_Create_OnlyCanAddNormalPayForVendorSettleOrder!"); } } else { ThrowBizException("PayItem_Create_SettleStatusInvalid2!"); } List <PayableInfo> payList = PayableBizProcessor.GetListByCriteria(new PayableInfo { OrderSysNo = entity.OrderSysNo, OrderType = entity.OrderType }); //如果该单据已经有应付了,对该应付作检查 if (payList != null && payList.Count > 0) { ReferencePayableInfo = payList[0]; if (ReferencePayableInfo.PayStatus == PayableStatus.FullPay) { ThrowBizException("PayItem_Create_FullPay"); } } }
public CollectionPaymentInfo UpdateVendorSettleStatus(CollectionPaymentInfo entity) { DataCommand command = DataCommandManager.GetDataCommand("UpdateCollVendorSettleStatus"); command.SetParameterValue("@CreateTime", entity.CreateTime); command.SetParameterValue("@CreateUserSysNo", entity.CreateUserSysNo); command.SetParameterValue("@AuditTime", entity.AuditTime); command.SetParameterValue("@AuditUserSysNo", entity.AuditUserSysNo); command.SetParameterValue("@SettleUserSysNo", entity.SettleUserSysNo); command.SetParameterValue("@SettleTime", entity.SettleTime); command.SetParameterValue("@Memo", entity.Memo); command.SetParameterValue("@Note", entity.Note); command.SetParameterValue("@Status", entity.Status); command.SetParameterValue("@SysNo", entity.SysNo); CommonHelper.SetCommonParams(command); command.ExecuteNonQuery(); return(entity); }
/// <summary> /// //审核代销结算单 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnAudit_Click(object sender, RoutedEventArgs e) { Window.Confirm(ResConsignMaintain.InfoMsg_Title, ResConsignQuery.AlertMsg_Confirm, (obj, args) => { if (args.DialogResult == DialogResultType.OK) { CollectionPaymentInfo getSettlementInfo = BuildActionEntity(); //getSettlementInfo.AuditUser=CPApplication.Current. serviceFacade.Audit(getSettlementInfo, (obj2, args2) => { if (args2.FaultsHandle()) { return; } AlertAndRefreshPage(ResConsignMaintain.InfoMsg_OperationSuccess); }); } }); }
public CollectionPaymentInfo CancelAudited(CollectionPaymentInfo entity) { VerifyCancelAudited(entity); entity.AuditUserSysNo = entity.CurrentUserSysNo; //entity.AuditUserSysNo = SystemUserHelper.GetUserSystemNumber(BusinessContext.Current.OperationUserFullName, // BusinessContext.Current.OperationUserSourceDirectoryKey, BusinessContext.Current.OperationUserLoginName, // BusinessContext.Current.CompanyCode); entity.CreateTime = DateTime.Now; entity.Status = POCollectionPaymentSettleStatus.Origin; entity = CollectionPaymentDA.UpdateVendorSettleStatus(entity); //发送ESB消息 EventPublisher.Publish <CollectionPaymentCancelMessage>(new CollectionPaymentCancelMessage() { CurrentUserSysNo = ServiceContext.Current.UserSysNo, SysNo = entity.SysNo.Value }); return(entity); }
private void VerifyAudite(CollectionPaymentInfo entity) { Verfy(entity); //<!--Add By Kilin 2012-08-24 //代销结算单,创建人和审核人不能相同 CollectionPaymentInfo old = this.CollectionPaymentDA.Load(entity.SysNo.Value); if (old == null) { throw new BizException("单据不存在!"); } //1 检查当前结算单状态 if (old.Status.Value != POCollectionPaymentSettleStatus.Origin) { throw new BizException("不是待审核状态!"); } //if (old.CreateUserSysNo == entity.AuditUserSysNo) // { // throw new BizException("创建人,审核人不能相同"); // } }
/// <summary> /// 获取已经超过结算数量的规则 /// </summary> /// <param name="entity">请求的结算单</param> /// <returns>超过结算数量的规则</returns> public ConsignSettlementRulesInfo GetOverConsignRule(CollectionPaymentInfo entity) { ConsignSettlementRulesInfo result = null; //提取结算单中包括的规则的项,并统计 StringBuilder ruleIds = new StringBuilder(); ruleIds.Append("-9999"); var ruleSysNoList = entity.SettleItems.Select(p => p.SettleRuleSysNo.ToString()).Distinct(); foreach (var item in ruleSysNoList) { if (!string.IsNullOrEmpty(item)) { ruleIds.Append("," + item + ""); } } //提出需要判断的规则相关参数 var ruleList = ConsignSettlementRulesDA.GetSettleRuleListBySysNos(ruleIds.ToString()); if (ruleList.Count > 0) { foreach (var rule in ruleList) { //提交规则对应的数量hack rule.SubmitSettleQuantity = (int)entity.SettleItems.Where(p => p.SettleRuleSysNo == rule.RuleSysNo).Sum(p => p.ConsignQty); //判断数量是否超过结算数量 if (rule.IsOverQuantity) { result = rule; break; } } } return(result); }
/// <summary> /// 审核 /// </summary> /// <param name="entity"></param> /// <returns></returns> public CollectionPaymentInfo Audit(CollectionPaymentInfo entity) { string OperationIP = entity.OperationIP; int? OperationUserSysNumber = entity.OperationUserSysNumber; string OperationUserUniqueName = entity.OperationUserUniqueName; entity.AuditUserSysNo = entity.CurrentUserSysNo; //entity.AuditUserSysNo = SystemUserHelper.GetUserSystemNumber(BusinessContext.Current.OperationUserFullName, // BusinessContext.Current.OperationUserSourceDirectoryKey, BusinessContext.Current.OperationUserLoginName, // BusinessContext.Current.CompanyCode); //entity.AuditUserSysNo = 3256; VerifyAudite(entity); VerifyProductPMSysNo(entity); entity.AuditTime = DateTime.Now; entity.Status = POCollectionPaymentSettleStatus.Audited; entity = CollectionPaymentDA.UpdateVendorSettleStatus(entity); //发送ESB消息 EventPublisher.Publish <CollectionPaymentAuditMessage>(new CollectionPaymentAuditMessage() { CurrentUserSysNo = ServiceContext.Current.UserSysNo, SysNo = entity.SysNo.Value }); entity.OperationIP = OperationIP; entity.OperationUserSysNumber = OperationUserSysNumber; entity.OperationUserUniqueName = OperationUserUniqueName; //CommonService.WriteLog<CollectionPaymentEntity>(entity, " Audit CollectionPayment ", entity.SysNo.Value.ToString(), (int)LogType.CollectionPayment_Audit); ExternalDomainBroker.CreateLog(" Audit CollectionPayment " , BizEntity.Common.BizLogType.POC_VendorSettle_Audit , entity.SysNo.Value , entity.CompanyCode); return(entity); }
public CollectionPaymentInfo GetVendorSettleBySysNo(CollectionPaymentInfo entity) { DataCommand command; if (entity.SysNo.HasValue) { command = DataCommandManager.GetDataCommand("GetCollVendorSettleBySysNo"); command.SetParameterValue("@SysNo", entity.SysNo.Value); CommonHelper.SetCommonParams(command); entity = command.ExecuteEntity <CollectionPaymentInfo>(); command = DataCommandManager.GetDataCommand("GetCollVendorSettleItemBySettleSysNo"); command.SetParameterValue("@SettleSysNo", entity.SysNo.Value); CommonHelper.SetCommonParams(command); entity.SettleItems = command.ExecuteEntityList <CollectionPaymentItem>(); } return(entity); }
public CollectionPaymentInfo CancelAbandon(CollectionPaymentInfo entity) { string OperationIP = entity.OperationIP; int? OperationUserSysNumber = entity.OperationUserSysNumber; string OperationUserUniqueName = entity.OperationUserUniqueName; entity.CreateUserSysNo = entity.CreateUserSysNo; VerifyCancelAbandon(entity); entity.Status = POCollectionPaymentSettleStatus.Origin; //将代收代付转财务记录的状态修改为人工已建 foreach (var item in entity.SettleItems) { item.ConsignToAccLogInfo.ConsignToAccStatus = ConsignToAccountLogStatus.ManualCreated; } using (TransactionScope scope = new TransactionScope()) { entity = CollectionPaymentDA.UpdateVendorSettleStatus(entity); //更新代销转财务记录状态 UpdateConsignToAccLogStatus(entity); scope.Complete(); } entity.OperationIP = OperationIP; entity.OperationUserSysNumber = OperationUserSysNumber; entity.OperationUserUniqueName = OperationUserUniqueName; ExternalDomainBroker.CreateLog(" Abandon Cancel CollectionPayment " , BizEntity.Common.BizLogType.POC_VendorSettle_Abandon , entity.SysNo.Value , entity.CompanyCode); return(entity); }
public virtual void VerifyProductPMSysNo(CollectionPaymentInfo entity) { if (entity.PMInfo == null || !entity.PMInfo.SysNo.HasValue) { //代销结算单的归属PM不能为空 throw new BizException("代销结算单的归属PM不能为空"); } #region Jack.W.Wang 本代码已停用,更换为产品线验证 //获取PM Backup List: List <int> pms = ConsignSettlementDA.GetBackUpPMList(entity.PMInfo.SysNo.Value, entity.CompanyCode); pms.Add(entity.PMInfo.SysNo.Value); //代销单归属PM(或归属PM的备份PM)与商品PM不一致 : bool exists = ConsignSettlementDA.ExistsDifferentPMSysNo(pms, entity.SettleItems.Select(x => x.ProductSysNo.Value).ToList(), entity.CompanyCode); if (exists) { //代销单归属PM(或归属PM的备份PM)与商品PM不一致 throw new BizException("归属PM(或归属PM的备份PM)与商品PM不一致"); } #endregion }