Пример #1
0
 /// <summary>
 /// 作废订单收款单(已付款的生成退款信息)
 /// </summary>
 /// <param name="order">订单</param>
 /// <param name="user">操作用户</param>
 /// <param name="autoPay">自动付款</param>
 /// <returns></returns>
 ///<remarks>2013-07-17 朱成果 创建</remarks>
 public void CancelOrderReceipt(SoOrder order, SyUser user, bool autoPay = false)
 {
     if (order != null)
     {
         var entity = Hyt.DataAccess.Finance.IFnReceiptVoucherDao.Instance.GetEntity(sourceFromOrder, order.SysNo);
         if (entity != null && entity.Status != (int)FinanceStatus.收款单状态.作废)
         {
             //已收款,生成新的付款单,否则作废收款单
             if (entity.ReceivedAmount > 0)
             {
                 FnPaymentVoucher pv = new FnPaymentVoucher()
                 {
                     PayableAmount    = entity.ReceivedAmount,
                     CreatedBy        = user == null ? 0 : user.SysNo,
                     CreatedDate      = DateTime.Now,
                     CustomerSysNo    = order.CustomerSysNo,
                     Source           = (int)FinanceStatus.付款来源类型.销售单,
                     TransactionSysNo = entity.TransactionSysNo,
                     SourceSysNo      = order.SysNo,
                     Status           = autoPay?(int)FinanceStatus.付款单状态.已付款:(int)FinanceStatus.付款单状态.待付款,
                     Remarks          = "订单作废",
                     PayDate          = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue,
                     LastUpdateDate   = DateTime.Now
                 };
                 pv.SysNo = Hyt.DataAccess.Finance.IFnPaymentVoucherDao.Instance.Insert(pv);
                 var list = Hyt.DataAccess.Finance.IFnReceiptVoucherItemDao.Instance.GetListByReceiptNo(entity.SysNo);
                 if (list != null)
                 {
                     foreach (FnReceiptVoucherItem m in list)
                     {
                         FnPaymentVoucherItem p = new FnPaymentVoucherItem()
                         {
                             Amount                   = m.Amount,
                             CreatedBy                = user == null ? 0 : user.SysNo,
                             CreatedDate              = DateTime.Now,
                             OriginalVoucherNo        = m.VoucherNo,
                             OriginalPaymentTypeSysNo = m.PaymentTypeSysNo,
                             PaymentType              = GetPaymentType(m.PaymentTypeSysNo),//支付方式对应付款方式
                             PaymentVoucherSysNo      = pv.SysNo,
                             RefundAccount            = m.CreditCardNumber,
                             TransactionSysNo         = entity.TransactionSysNo,
                             Status                   = autoPay? (int)FinanceStatus.付款单明细状态.已付款 : (int)FinanceStatus.付款单明细状态.待付款,
                             PayDate                  = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue,
                             LastUpdateDate           = DateTime.Now
                         };
                         Hyt.DataAccess.Finance.IFnPaymentVoucherDao.Instance.InsertItem(p);
                     }
                 }
             }
             else
             {
                 entity.Remark         = "订单作废";
                 entity.Status         = (int)FinanceStatus.收款单状态.作废;
                 entity.LastUpdateDate = DateTime.Now;
                 entity.LastUpdateBy   = user == null ? 0 : user.SysNo;
                 Hyt.DataAccess.Finance.IFnReceiptVoucherDao.Instance.Update(entity);
             }
         }
     }
 }
Пример #2
0
 /// <summary>
 /// 更新付款单明细
 /// </summary>
 /// <param name="entity">付款单明细</param>
 /// <returns></returns>
 /// <remarks>2013-07-22  朱成果 创建</remarks>
 public override void UpdateVoucherItem(FnPaymentVoucherItem entity)
 {
     Context.Update("FnPaymentVoucherItem", entity)
     .AutoMap(o => o.SysNo)
     .Where("SysNo", entity.SysNo)
     .Execute();
 }
Пример #3
0
        /// <summary>
        /// 创建付款单明细
        /// </summary>
        /// <param name="model">付款单明细</param>
        /// <returns>付款单明细系统编号</returns>
        /// <remarks>
        /// 2013-7-12 何方 创建
        /// 2013-07-19 朱成果 修改
        /// </remarks>
        public override int InsertItem(FnPaymentVoucherItem model)
        {
            var sysNo = Context.Insert("FnPaymentVoucherItem", model)
                        .AutoMap(o => o.SysNo)
                        .ExecuteReturnLastId <int>("SysNo");

            return(sysNo);
        }
Пример #4
0
        /// <summary>
        /// 二期业务数据1段 财务
        /// </summary>
        /// <param name="listObject"></param>
        private void AddBaseTaskObject2ToList2(List <BaseTask> listObject)
        {
            BaseTask fninvoice = new FnInvoice();

            BaseTask fnpv = new FnReceiptVoucher();
            BaseTask fnReceiptVoucherItem = new FnReceiptVoucherItem();
            BaseTask fnop                 = new FnOnlinePayment();
            BaseTask fnPaymentVoucher     = new FnPaymentVoucher();
            BaseTask fnPaymentVoucherItem = new FnPaymentVoucherItem();



            listObject.Add(fninvoice);
            listObject.Add(fnpv);
            listObject.Add(fnReceiptVoucherItem);
            listObject.Add(fnop);


            listObject.Add(fnPaymentVoucher);
            listObject.Add(fnPaymentVoucherItem);
        }
Пример #5
0
        private void AddBaseTaskObjectToList(List <BaseTask> listObject)
        {
            BaseTask bsAT                    = new BsArea();
            BaseTask bsDP                    = new BsDeliveryPayment();
            BaseTask bsPT                    = new BsPaymentType();
            BaseTask bsCode                  = new BsCode();
            BaseTask bsOrganization          = new BsOrganization();
            BaseTask bsOrganizationWarehouse = new BsOrganizationWarehouse();

            BaseTask crCustomer = new CrCustomer();
            BaseTask crCL       = new CrCustomerLevel();
            BaseTask crCQ       = new CrCustomerQuestion();
            BaseTask crRA       = new CrReceiveAddress();

            BaseTask dsMallType      = new DsMallType();
            BaseTask dsDealerLevel   = new DsDealerLevel();
            BaseTask feArticle       = new FeArticle();
            BaseTask feAC            = new FeArticleCategory();
            BaseTask feCS            = new FeCommentSupport();
            BaseTask fepc            = new FeProductComment();
            BaseTask fePCI           = new FeProductCommentImage();
            BaseTask fePCR           = new FeProductCommentReply();
            BaseTask feSearchKeyword = new FeSearchKeyword();
            BaseTask feadvertgroup   = new FeAdvertGroup();
            BaseTask feadvertitem    = new FeAdvertItem();
            BaseTask feproductgroup  = new FeProductGroup();
            BaseTask feproductitem   = new FeProductItem();

            BaseTask fnIT      = new FnInvoiceType();
            BaseTask fninvoice = new FnInvoice();

            BaseTask fnpv = new  FnReceiptVoucher();
            BaseTask fnReceiptVoucherItem = new FnReceiptVoucherItem();
            BaseTask fnop                 = new FnOnlinePayment();
            BaseTask fnPaymentVoucher     = new FnPaymentVoucher();
            BaseTask fnPaymentVoucherItem = new FnPaymentVoucherItem();

            BaseTask lgDelivery              = new LgDelivery();
            BaseTask lgDI                    = new LgDeliveryItem();
            BaseTask lgDS                    = new LgDeliveryScope();
            BaseTask lgDT                    = new LgDeliveryType();
            BaseTask lgDUC                   = new LgDeliveryUserCredit();
            BaseTask lgPT                    = new LgPickupType();
            BaseTask lgsettlement            = new LgSettlement();
            BaseTask lgSI                    = new LgSettlementItem();
            BaseTask lgDeliveryPrintTemplate = new LgDeliveryPrintTemplate();
            BaseTask pdAttribute             = new PdAttribute();
            BaseTask pdAG                    = new PdAttributeGroup();
            BaseTask pdAGA                   = new PdAttributeGroupAssociation();
            BaseTask pdAO                    = new PdAttributeOption();
            BaseTask pdBrand                 = new PdBrand();
            BaseTask pdCGA                   = new PdCatAttributeGroupAso();
            BaseTask pdCategory              = new PdCategory();
            BaseTask pdCA                    = new PdCategoryAssociation();
            BaseTask pdPrice                 = new PdPrice();
            BaseTask pdProduct               = new PdProduct();
            BaseTask pdPA                    = new PdProductAssociation();
            BaseTask pdProductAttribute      = new PdProductAttribute();
            BaseTask pdPI                    = new PdProductImage();
            BaseTask pdTemplate              = new PdTemplate();
            BaseTask pdProductStatistics     = new PdProductStatistics();

            BaseTask soOrder         = new SoOrder();
            BaseTask soOrderItem     = new SoOrderItem();
            BaseTask soRA            = new SoReceiveAddress();
            BaseTask SyUG            = new SyUserGroup();
            BaseTask syGU            = new SyGroupUser();
            BaseTask syMenu          = new SyMenu();
            BaseTask syMenuPrivilege = new SyMenuPrivilege();
            BaseTask syPrivilege     = new SyPrivilege();
            BaseTask syRole          = new SyRole();
            BaseTask syRoleMenu      = new SyRoleMenu();
            BaseTask syRolePrivilege = new SyRolePrivilege();
            BaseTask syPermission    = new SyPermission();
            BaseTask syUser          = new SyUser();
            BaseTask syUW            = new SyUserWarehouse();
            BaseTask syMyMenu        = new SyMyMenu();

            BaseTask spcombo                  = new SpCombo();
            BaseTask spComboItem              = new SpComboItem();
            BaseTask spcopon                  = new spcoupon();
            BaseTask sqpromotion              = new SPpromotion();
            BaseTask spromotiongift           = new SPpromotiongift();
            BaseTask sppromotionoverlay       = new SPpromotionoverlay();
            BaseTask sppromotionrule          = new SPpromotionrule();
            BaseTask sppromotionrulecondition = new SPpromotionrulecondition();
            BaseTask sppromotionrulekeyvalue  = new SPpromotionrulekeyvalue();
            BaseTask syTaskConfig             = new SyTaskConfig();

            BaseTask whStockOut     = new WhStockOut();
            BaseTask whStockOutItem = new WhstockOutItem();
            BaseTask whwarehouse    = new WhWarehouse();
            BaseTask whwa           = new WHwarehousearea();
            BaseTask whwdy          = new WHwarehouseDeliveryType();
            BaseTask whWPT          = new WhWarehousePickupType();
            BaseTask whstockin      = new WhStockIn();
            BaseTask whstockinItem  = new WHStockinItem();
            BaseTask rcReturn       = new RCReturn();
            BaseTask rcReturnItem   = new RcReturnItem();

            listObject.Add(bsAT);
            listObject.Add(bsDP);
            listObject.Add(bsPT);
            listObject.Add(bsCode);
            listObject.Add(bsOrganization);
            listObject.Add(bsOrganizationWarehouse);

            listObject.Add(crCustomer);
            listObject.Add(crCL);
            listObject.Add(crCQ);
            listObject.Add(crRA);
            listObject.Add(dsMallType);
            listObject.Add(dsDealerLevel);
            listObject.Add(feArticle);
            listObject.Add(feAC);
            listObject.Add(feCS);
            listObject.Add(fePCI);
            listObject.Add(fePCR);
            listObject.Add(fepc);
            listObject.Add(feSearchKeyword);
            listObject.Add(feadvertgroup);
            listObject.Add(feadvertitem);
            listObject.Add(feproductgroup);
            listObject.Add(feproductitem);

            listObject.Add(fnIT);
            listObject.Add(fnpv);
            listObject.Add(fnReceiptVoucherItem);
            listObject.Add(fnop);
            listObject.Add(fninvoice);

            listObject.Add(fnPaymentVoucher);
            listObject.Add(fnPaymentVoucherItem);

            listObject.Add(lgDelivery);
            listObject.Add(lgDI);
            listObject.Add(lgDS);
            listObject.Add(lgDT);
            listObject.Add(lgPT);
            listObject.Add(lgsettlement);
            listObject.Add(lgSI);
            listObject.Add(lgDeliveryPrintTemplate);

            listObject.Add(pdAttribute);
            listObject.Add(pdAG);
            listObject.Add(pdAGA);
            listObject.Add(pdAO);
            listObject.Add(pdBrand);
            listObject.Add(pdCGA);
            listObject.Add(pdCategory);
            listObject.Add(pdCA);
            listObject.Add(pdPrice);
            listObject.Add(pdProduct);
            listObject.Add(pdPA);
            listObject.Add(pdProductAttribute);
            listObject.Add(pdTemplate);
            listObject.Add(pdProductStatistics);

            listObject.Add(soOrder);
            listObject.Add(soOrderItem);

            listObject.Add(spcombo);
            listObject.Add(spComboItem);
            listObject.Add(spcopon);
            listObject.Add(sqpromotion);
            listObject.Add(spromotiongift);
            //listObject.Add(sppromotionoverlay);
            listObject.Add(sppromotionrule);
            listObject.Add(sppromotionrulecondition);
            listObject.Add(sppromotionrulekeyvalue);

            listObject.Add(syGU);
            listObject.Add(syUW);
            listObject.Add(SyUG);
            listObject.Add(syMenu);
            listObject.Add(syUser);
            listObject.Add(syPermission);

            listObject.Add(syMenuPrivilege);
            listObject.Add(syPrivilege);
            listObject.Add(syRole);
            listObject.Add(syRoleMenu);
            listObject.Add(syRolePrivilege);
            listObject.Add(syMyMenu);
            listObject.Add(syTaskConfig);

            listObject.Add(whStockOut);
            listObject.Add(whStockOutItem);
            listObject.Add(whwarehouse);
            listObject.Add(whwa);
            listObject.Add(whwdy);
            listObject.Add(whWPT);
            listObject.Add(whstockin);
            listObject.Add(whstockinItem);
            listObject.Add(rcReturn);
            listObject.Add(rcReturnItem);
            listObject.Add(lgDUC);
            listObject.Add(pdPI);
            listObject.Add(soRA);
        }
Пример #6
0
 /// <summary>
 /// 创建付款单
 /// </summary>
 /// <param name="paymentVoucher">府库单主表.</param>
 /// <param name="item">付款单明细.</param>
 /// <returns>付款单号</returns>
 /// <remarks>
 /// 2013-07-12 何方 创建
 /// </remarks>
 public int CreatePaymentVoucher(FnPaymentVoucher paymentVoucher, FnPaymentVoucherItem item)
 {
     return(CreatePaymentVoucher(paymentVoucher, new List <FnPaymentVoucherItem> {
         item
     }));
 }
Пример #7
0
 /// <summary>
 /// 添加付款单明细
 /// </summary>
 /// <param name="item">明细实体</param>
 /// <returns></returns>
 /// <remarks>2013-07-19 朱成果 创建</remarks>
 public int InsertPaymentVoucherItem(FnPaymentVoucherItem item)
 {
     return(Hyt.DataAccess.Finance.IFnPaymentVoucherDao.Instance.InsertItem(item));
 }
Пример #8
0
        /// <summary>
        /// 审核提现订单
        /// </summary>
        /// <param name="sysNo">提现订单系统编号</param>
        /// <returns></returns>
        /// <remarks>2016-1-10 杨浩 创建</remarks>
        public bool AduitPredepositCash(int sysNo)
        {
            using (var tran = new TransactionScope())
            {
                ICrPredepositCashDao.Instance.UpdateStatus(sysNo, 1);
                #region 付款单

                var predepositCashInfo = GetModel(sysNo);
                var pvEntity           = new FnPaymentVoucher();
                pvEntity.Source            = (int)FinanceStatus.付款来源类型.会员提现单;
                pvEntity.SourceSysNo       = sysNo;
                pvEntity.PayableAmount     = predepositCashInfo.PdcAmount;
                pvEntity.PaidAmount        = 0;
                pvEntity.CustomerSysNo     = predepositCashInfo.PdcUserId;
                pvEntity.RefundBank        = predepositCashInfo.PdcToBank;
                pvEntity.RefundAccountName = predepositCashInfo.PdcToName;
                pvEntity.RefundAccount     = predepositCashInfo.PdcCashAccount;
                pvEntity.Status            = (int)FinanceStatus.付款单状态.待付款;
                pvEntity.CreatedDate       = DateTime.Now;
                pvEntity.PayDate           = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue;
                pvEntity.LastUpdateDate    = DateTime.Now;
                pvEntity.PaymentType       = predepositCashInfo.PdcPaymentId;
                var paymentVoucherItem = new List <FnPaymentVoucherItem>();

                #region 提现到余额
                if (predepositCashInfo.PdcPaymentId == (int)FinanceStatus.付款单付款方式.余额)
                {
                    var customerInfo = BLL.CRM.CrCustomerBo.Instance.GetModel(pvEntity.CustomerSysNo);

                    pvEntity.Status        = (int)FinanceStatus.付款单状态.已付款;
                    pvEntity.PayDate       = DateTime.Now;
                    pvEntity.PayableAmount = 0;
                    pvEntity.PaidAmount    = predepositCashInfo.PdcAmount;

                    var item = new FnPaymentVoucherItem();
                    item.PaymentType       = pvEntity.PaymentType;
                    item.Amount            = pvEntity.PayableAmount;
                    item.VoucherNo         = Guid.NewGuid().ToString("N");
                    item.Status            = (int)FinanceStatus.付款单状态.已付款;
                    item.RefundBank        = "转为商城余额";
                    item.RefundAccountName = customerInfo.NickName;
                    item.RefundAccount     = customerInfo.Account;
                    item.CreatedDate       = DateTime.Now;
                    item.PayDate           = DateTime.Now;
                    item.LastUpdateDate    = DateTime.Now;
                    paymentVoucherItem.Add(item);

                    //充值记录
                    var model = new CrRecharge();
                    model.TradeNo       = Guid.NewGuid().ToString("N"); //"RechargeWX_" + dtNow.ToString("yyMMddHHmmssfff");
                    model.OutTradeNo    = predepositCashInfo.PdcOutTradeNo;
                    model.CustomerSysNo = customerInfo.SysNo;
                    model.ReAmount      = predepositCashInfo.PdcAmount;
                    model.RePaymentName = "佣金转余额";
                    model.RePaymentId   = Hyt.Model.SystemPredefined.PaymentType.转账;
                    model.ReAddTime     = DateTime.Now;
                    model.State         = 1;
                    model.ReMark        = "佣金:" + predepositCashInfo.PdcAmount + "元,转为余额";

                    int res = Hyt.BLL.Balance.CrRechargeBo.Instance.CreateCrRecharge(model);

                    //更新余额
                    int isb = Hyt.BLL.Balance.CrRechargeBo.Instance.IsExistenceABalance(customerInfo.SysNo);
                    if (isb == 0)
                    {
                        var balance = new CrAccountBalance();
                        balance.CustomerSysNo    = customerInfo.SysNo;
                        balance.AvailableBalance = predepositCashInfo.PdcAmount;
                        balance.FrozenBalance    = 0M;
                        balance.TolBlance        = predepositCashInfo.PdcAmount;
                        balance.Remark           = "";
                        balance.State            = 0;
                        balance.AddTime          = DateTime.Now;
                        int ba = Hyt.BLL.Balance.CrRechargeBo.Instance.CreateCrAccountBalance(balance);
                    }
                    else
                    {
                        //更新会员余额
                        Hyt.BLL.Balance.CrRechargeBo.Instance.UpdateAccountBalance(predepositCashInfo.PdcAmount, customerInfo.SysNo);
                    }

                    BLL.CRM.CrCustomerBo.Instance.UpdateCustomerBrokerageFreeze(customerInfo.SysNo, predepositCashInfo.PdcAmount);
                }
                #endregion

                int voucher = Hyt.BLL.Finance.FinanceBo.Instance.CreatePaymentVoucher(pvEntity, paymentVoucherItem);
                tran.Complete();

                #endregion

                return(true);
            }
        }
Пример #9
0
        /// <summary>
        /// 作废收款单
        /// </summary>
        /// <param name="sysNo">收款单编号</param>
        /// <param name="syUser">操作用户</param>
        /// <returns></returns>
        ///<remarks>2013-07-08 朱成果 创建</remarks>
        public void CancelReceiptVoucher(int sysNo, SyUser user)
        {
            var entity = Hyt.DataAccess.Finance.IFnReceiptVoucherDao.Instance.GetEntity(sysNo);

            if (entity == null)
            {
                throw new Exception("该收款单不存在");
            }

            if (entity.Status != (int)FinanceStatus.收款单状态.作废 && entity.ReceivedAmount > 0)
            {
                SoOrder order = SoOrderBo.Instance.GetEntity(entity.SourceSysNo);
                if (order != null)
                {
                    var orderItems =
                        Hyt.DataAccess.Order.ISoOrderItemDao.Instance.GetOrderItemsByOrderSysNo(order.SysNo).ToList();
                    if (orderItems.Exists(o => o.RealStockOutQuantity > 0))
                    {
                        throw new Exception("该订单存在已经出库的商品不能作废");
                    }
                    FnPaymentVoucher pv = new FnPaymentVoucher()
                    {
                        PayableAmount    = entity.ReceivedAmount,
                        CreatedBy        = user == null ? 0 : user.SysNo,
                        CreatedDate      = DateTime.Now,
                        CustomerSysNo    = order.CustomerSysNo,
                        Source           = (int)FinanceStatus.付款来源类型.销售单,
                        TransactionSysNo = entity.TransactionSysNo,
                        SourceSysNo      = order.SysNo,
                        Status           = (int)FinanceStatus.付款单状态.待付款,
                        Remarks          = "订单作废"
                    };
                    //保存付款单
                    pv.SysNo = Hyt.DataAccess.Finance.IFnPaymentVoucherDao.Instance.Insert(pv);
                    var list = Hyt.DataAccess.Finance.IFnReceiptVoucherItemDao.Instance.GetListByReceiptNo(entity.SysNo);
                    if (list != null)
                    {
                        foreach (FnReceiptVoucherItem m in list)
                        {
                            FnPaymentVoucherItem p = new FnPaymentVoucherItem()
                            {
                                Amount                   = m.Amount,
                                CreatedBy                = user == null ? 0 : user.SysNo,
                                CreatedDate              = DateTime.Now,
                                OriginalVoucherNo        = m.VoucherNo,
                                OriginalPaymentTypeSysNo = m.PaymentTypeSysNo,
                                PaymentType              = GetPaymentType(m.PaymentTypeSysNo),//支付方式对应付款方式
                                PaymentVoucherSysNo      = pv.SysNo,
                                RefundAccount            = m.CreditCardNumber,
                                TransactionSysNo         = entity.TransactionSysNo,
                                Status                   = (int)FinanceStatus.付款单明细状态.待付款
                            };
                            //保存付款单明细
                            Hyt.DataAccess.Finance.IFnPaymentVoucherDao.Instance.InsertItem(p);
                        }
                    }
                    var payType = PaymentTypeBo.Instance.GetPaymentTypeFromMemory(order.PayTypeSysNo).PaymentType;
                    //修改订单状态为待支付
                    if (payType == (int)BasicStatus.支付方式类型.预付)
                    {
                        order.PayStatus    = (int)Hyt.Model.WorkflowStatus.OrderStatus.销售单支付状态.未支付;
                        order.Status       = (int)Hyt.Model.WorkflowStatus.OrderStatus.销售单状态.待支付;
                        order.OnlineStatus = Constant.OlineStatusType.待支付;
                        SoOrderBo.Instance.UpdateOrder(order); //更新订单 余勇修改为调用业务层方法
                        //Hyt.DataAccess.Order.ISoOrderDao.Instance.Update(order);
                    }
                }
            }
            entity.Status         = (int)FinanceStatus.收款单状态.作废;
            entity.LastUpdateDate = DateTime.Now;
            entity.LastUpdateBy   = user.SysNo;
            Hyt.DataAccess.Finance.IFnReceiptVoucherDao.Instance.Update(entity);
        }
Пример #10
0
 /// <summary>
 /// 更新付款单明细
 /// </summary>
 /// <param name="entity">付款单明细</param>
 /// <returns></returns>
 /// <remarks>2013-07-22  朱成果 创建</remarks>
 public abstract void UpdateVoucherItem(FnPaymentVoucherItem entity);
Пример #11
0
 /// <summary>
 /// 添加付款单明细
 /// </summary>
 /// <param name="model">付款单明细</param>
 /// <returns></returns>
 /// <remarks>
 /// 2013-7-12 何方 创建
 /// 2013-07-19 朱成果 修改
 /// </remarks>
 public abstract int InsertItem(FnPaymentVoucherItem model);