예제 #1
0
파일: SOIncomeDac.cs 프로젝트: ue96/ue96
        public int Insert(SOIncomeInfo oParam)
        {
            string sql = @"INSERT INTO Finance_SOIncome
                            (
                            OrderType, OrderSysNo,
                            OrderAmt, IncomeStyle, IncomeAmt, IncomeTime,
                            IncomeUserSysNo, ConfirmTime, ConfirmUserSysNo, Note,
                            Status
                            )
                            VALUES (
                            @OrderType, @OrderSysNo,
                            @OrderAmt, @IncomeStyle, @IncomeAmt, @IncomeTime,
                            @IncomeUserSysNo, @ConfirmTime, @ConfirmUserSysNo, @Note,
                            @Status
                            );set @SysNo = SCOPE_IDENTITY();";

            SqlCommand cmd = new SqlCommand(sql);

            SqlParameter paramSysNo = new SqlParameter("@SysNo", SqlDbType.Int,4);
            SqlParameter paramOrderType = new SqlParameter("@OrderType", SqlDbType.Int,4);
            SqlParameter paramOrderSysNo = new SqlParameter("@OrderSysNo", SqlDbType.Int,4);
            SqlParameter paramOrderAmt = new SqlParameter("@OrderAmt", SqlDbType.Decimal,9);
            SqlParameter paramIncomeStyle = new SqlParameter("@IncomeStyle", SqlDbType.Int,4);
            SqlParameter paramIncomeAmt = new SqlParameter("@IncomeAmt", SqlDbType.Decimal,9);
            SqlParameter paramIncomeTime = new SqlParameter("@IncomeTime", SqlDbType.DateTime);
            SqlParameter paramIncomeUserSysNo = new SqlParameter("@IncomeUserSysNo", SqlDbType.Int,4);
            SqlParameter paramConfirmTime = new SqlParameter("@ConfirmTime", SqlDbType.DateTime);
            SqlParameter paramConfirmUserSysNo = new SqlParameter("@ConfirmUserSysNo", SqlDbType.Int,4);
            SqlParameter paramNote = new SqlParameter("@Note", SqlDbType.NVarChar,200);
            SqlParameter paramStatus = new SqlParameter("@Status", SqlDbType.Int,4);

            paramSysNo.Direction = ParameterDirection.Output;

            if ( oParam.OrderType != AppConst.IntNull)
                paramOrderType.Value = oParam.OrderType;
            else
                paramOrderType.Value = System.DBNull.Value;
            if ( oParam.OrderSysNo != AppConst.IntNull)
                paramOrderSysNo.Value = oParam.OrderSysNo;
            else
                paramOrderSysNo.Value = System.DBNull.Value;
            if ( oParam.OrderAmt != AppConst.DecimalNull)
                paramOrderAmt.Value = oParam.OrderAmt;
            else
                paramOrderAmt.Value = System.DBNull.Value;
            if ( oParam.IncomeStyle != AppConst.IntNull)
                paramIncomeStyle.Value = oParam.IncomeStyle;
            else
                paramIncomeStyle.Value = System.DBNull.Value;
            if ( oParam.IncomeAmt != AppConst.DecimalNull)
                paramIncomeAmt.Value = oParam.IncomeAmt;
            else
                paramIncomeAmt.Value = System.DBNull.Value;
            if ( oParam.IncomeTime != AppConst.DateTimeNull)
                paramIncomeTime.Value = oParam.IncomeTime;
            else
                paramIncomeTime.Value = System.DBNull.Value;
            if ( oParam.IncomeUserSysNo != AppConst.IntNull)
                paramIncomeUserSysNo.Value = oParam.IncomeUserSysNo;
            else
                paramIncomeUserSysNo.Value = System.DBNull.Value;
            if ( oParam.ConfirmTime != AppConst.DateTimeNull)
                paramConfirmTime.Value = oParam.ConfirmTime;
            else
                paramConfirmTime.Value = System.DBNull.Value;
            if ( oParam.ConfirmUserSysNo != AppConst.IntNull)
                paramConfirmUserSysNo.Value = oParam.ConfirmUserSysNo;
            else
                paramConfirmUserSysNo.Value = System.DBNull.Value;
            if ( oParam.Note != AppConst.StringNull)
                paramNote.Value = oParam.Note;
            else
                paramNote.Value = System.DBNull.Value;
            if ( oParam.Status != AppConst.IntNull)
                paramStatus.Value = oParam.Status;
            else
                paramStatus.Value = System.DBNull.Value;

            cmd.Parameters.Add(paramSysNo);
            cmd.Parameters.Add(paramOrderType);
            cmd.Parameters.Add(paramOrderSysNo);
            cmd.Parameters.Add(paramOrderAmt);
            cmd.Parameters.Add(paramIncomeStyle);
            cmd.Parameters.Add(paramIncomeAmt);
            cmd.Parameters.Add(paramIncomeTime);
            cmd.Parameters.Add(paramIncomeUserSysNo);
            cmd.Parameters.Add(paramConfirmTime);
            cmd.Parameters.Add(paramConfirmUserSysNo);
            cmd.Parameters.Add(paramNote);
            cmd.Parameters.Add(paramStatus);

            return SqlHelper.ExecuteNonQuery(cmd, out oParam.SysNo);
        }
예제 #2
0
        public void Refund(int masterSysNo, int userSysNo)
        {
            TransactionOptions options = new TransactionOptions();
            options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            options.Timeout = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {
                //�����dz�ʼ״̬
                RMARefundInfo oInfo = Load(masterSysNo);
                if (oInfo.Status != (int)AppEnum.RMARefundStatus.Audited)
                    throw new BizException("status is not audit now,  refund failed");

                //�����û�����
                int affectedPoint = 0;
                affectedPoint = -1 * oInfo.DeductPointFromAccount + oInfo.PointAmt;
                if (oInfo.RefundPayType == (int)AppEnum.RMARefundPayType.TransferPointRefund)
                {
                    affectedPoint += Convert.ToInt32(Decimal.Round(oInfo.CashAmt * AppConst.ExchangeRate, 0));
                }

                if (affectedPoint != 0)
                {
                    //д������־
                    //CustomerManager.GetInstance().SetCustomerPoint(oInfo.CustomerSysNo, affectedPoint, PointLogType.ReturnProduct, oInfo.SysNo.ToString(), "");
                    PointManager.GetInstance().SetScore(oInfo.CustomerSysNo, affectedPoint, (int)AppEnum.PointLogType.ReturnProduct , oInfo.SysNo.ToString());
                }

                Hashtable ht = new Hashtable(5);
                ht.Add("SysNo", masterSysNo);
                ht.Add("RefundUserSysNo", userSysNo);
                ht.Add("RefundTime", DateTime.Now);
                ht.Add("Status", (int)AppEnum.RMARefundStatus.Refunded);

                if (1 != new RMARefundDac().UpdateMaster(ht))
                    throw new BizException("expected one-row update failed, update failed ");

                string sql = @"select
                                   rma_refund_item.sysno ,registersysno ,revertstatus
                                from
                                   rma_refund_item (NOLOCK)
                                   inner join rma_register (NOLOCK) on rma_refund_item.registersysno = rma_register.sysno
                                where
                                   rma_refund_item.refundsysno =" + masterSysNo;
                DataSet ds = SqlHelper.ExecuteDataSet(sql);
                if (Util.HasMoreRow(ds))
                {
                    //����Register�ĸ���
                    foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        if (Util.TrimIntNull(dr["revertstatus"]) == (int)AppEnum.RMARevertStatus.Reverted)
                            throw new BizException("�Ѿ�����������ͻ����˿�ʧ�ܣ�����ϵͳ����Ա��ϵ��");

                        Hashtable htRegister = new Hashtable(2);
                        htRegister.Add("SysNo", Util.TrimIntNull(dr["registersysno"]));
                        htRegister.Add("RefundStatus", (int)AppEnum.RMARefundStatus.Refunded);
                        htRegister.Add("OwnBy", (int)AppEnum.RMAOwnBy.Icson);
                        RMARegisterManager.GetInstance().UpdateRegister(htRegister);
                    }
                }

                //�������Ч���տ-->����soincome(ro, origin)
                SOIncomeInfo soIncome = SOIncomeManager.GetInstance().LoadValid((int)AppEnum.SOIncomeOrderType.RO, oInfo.SysNo);
                if (soIncome == null)//����Ч�տ�������տ
                {
                    soIncome = new SOIncomeInfo();
                    soIncome.OrderType = (int)AppEnum.SOIncomeOrderType.RO;
                    soIncome.OrderSysNo = oInfo.SysNo;

                    decimal affectedCash = 0m;
                    if (oInfo.RefundPayType != (int)AppEnum.RMARefundPayType.TransferPointRefund)
                        affectedCash = -1 * oInfo.CashAmt;
                    soIncome.OrderAmt = soIncome.IncomeAmt = affectedCash;

                    soIncome.IncomeStyle = (int)AppEnum.SOIncomeStyle.RO;
                    soIncome.IncomeUserSysNo = userSysNo;
                    soIncome.IncomeTime = DateTime.Now;
                    soIncome.Status = (int)AppEnum.SOIncomeStatus.Origin;
                    SOIncomeManager.GetInstance().Insert(soIncome);
                    LogInfo log = new LogInfo();
                    log.OptIP = AppConst.SysIP;
                    log.OptUserSysNo = AppConst.SysUser;
                    log.OptTime = DateTime.Now;
                    log.TicketType = (int)AppEnum.LogType.Finance_SOIncome_Add;
                    log.TicketSysNo = soIncome.SysNo;
                    LogManager.GetInstance().Write(log);
                }

                scope.Complete();
            }
        }
예제 #3
0
파일: SaleManager.cs 프로젝트: ue96/ue96
        public void OutStock(SOInfo soInfo)
        {
            TransactionOptions options = new TransactionOptions();
            options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            options.Timeout = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {
                ////���¶���״̬
                //1 �鿴������ǰ״̬
                //2 ���ø���ֵ������status
                int currentStatus = this.getCurrentSOStatus(soInfo.SysNo);

                if (currentStatus != (int)AppEnum.SOStatus.WaitingOutStock)
                    throw new BizException("outstock so: the current status is not WaitingOutStock, operation of OutStock SO failed");

                //this.UpdateSO(soInfo);
                soInfo.Status = (int)AppEnum.SOStatus.OutStock;
                //���¶���״̬
                UpdateSOStatus(soInfo.SysNo, soInfo.Status, soInfo.OutUserSysNo);
                //������Ʒ���
                foreach(SOItemInfo item in soInfo.ItemHash.Values)
                {
                    InventoryManager.GetInstance().SetSOOutStockQty(soInfo.StockSysNo,item.ProductSysNo,item.Quantity);
                }
                //���¶���������ϸ�ɱ�
                this.SetSOItemCost(soInfo.SysNo);

                //�������Ч���տ-->����soincome(normal, origin)
                SOIncomeInfo soIncome = SOIncomeManager.GetInstance().LoadValid((int)AppEnum.SOIncomeOrderType.SO,soInfo.SysNo);
                if(soIncome==null)//����Ч�տ�������տ
                {
                    soIncome = new SOIncomeInfo();
                    soIncome.OrderType = (int)AppEnum.SOIncomeOrderType.SO;
                    soIncome.OrderSysNo = soInfo.SysNo;
                    soIncome.OrderAmt = soIncome.IncomeAmt = Util.TruncMoney(soInfo.GetTotalAmt());
                    soIncome.IncomeStyle = (int)AppEnum.SOIncomeStyle.Normal;
                    soIncome.IncomeUserSysNo = soInfo.OutUserSysNo;
                    soIncome.IncomeTime = DateTime.Now;
                    soIncome.Status = (int)AppEnum.SOIncomeStatus.Origin;
                    SOIncomeManager.GetInstance().Insert(soIncome);
                    LogInfo log = new LogInfo();
                    log.OptIP = AppConst.SysIP;
                    log.OptUserSysNo = AppConst.SysUser;
                    log.OptTime = DateTime.Now;
                    log.TicketType = (int)AppEnum.LogType.Finance_SOIncome_Add;
                    log.TicketSysNo = soIncome.SysNo;
                    LogManager.GetInstance().Write(log);
                }

                //���������������pointDelay
                if(soInfo.PointAmt>0)
                {
                    SalePointDelayInfo spInfo = new SalePointDelayInfo();
                    spInfo.SOSysNo = soInfo.SysNo;
                    spInfo.CreateTime = DateTime.Now;
                    spInfo.Status = (int)AppEnum.TriStatus.Origin;
                    PointManager.GetInstance().InsertPointDelay(spInfo);
                }

                //��ⶩ�����Ա������м�¼����£�û�������

                WhProductShelvingInspectionInfo oWhpsi = new WhProductShelvingInspectionInfo();
                Hashtable ht = new Hashtable();
                ht.Add("BillSysNo", soInfo.SysNo);
                ht.Add("WorkType", (int)AppEnum.WhWorkType.ProductInspection);
                ht.Add("BillType", (int)AppEnum.WhWorkBillType.SO);
                ht.Add("top", "select top 1 ");

                int whpsiSysNo = WhProductShelvingInspectionManager.GetInstance().GetSysNo(ht);

                if (whpsiSysNo == 0)
                {
                    oWhpsi.BillSysNo = soInfo.SysNo;
                    oWhpsi.WorkType = (int)AppEnum.WhWorkType.ProductInspection;
                    oWhpsi.BillType = (int)AppEnum.WhWorkBillType.SO;
                    oWhpsi.AllocatedUserSysNo = UserRatioManager.GetInstance().GetSOInspectionAllocatedMan(soInfo.SysNo);
                    oWhpsi.RealUserSysNo = oWhpsi.AllocatedUserSysNo;
                    oWhpsi.UpdateUserSysNo = 33;//IASϵͳ
                    oWhpsi.UpdateTime = DateTime.Now;
                    WhProductShelvingInspectionManager.GetInstance().Insert(oWhpsi);
                }
                else
                {
                    oWhpsi.SysNo = whpsiSysNo;
                    oWhpsi.BillSysNo = soInfo.SysNo;
                    oWhpsi.WorkType = (int)AppEnum.WhWorkType.ProductInspection;
                    oWhpsi.BillType = (int)AppEnum.WhWorkBillType.SO;
                    oWhpsi.AllocatedUserSysNo = UserRatioManager.GetInstance().GetSOInspectionAllocatedMan(soInfo.SysNo);
                    oWhpsi.RealUserSysNo = oWhpsi.AllocatedUserSysNo;
                    oWhpsi.UpdateUserSysNo = 33;//IASϵͳ
                    oWhpsi.UpdateTime = DateTime.Now;
                    WhProductShelvingInspectionManager.GetInstance().Update(oWhpsi);
                }

                scope.Complete();
            }
        }
예제 #4
0
 private void map(SOIncomeInfo oParam, DataRow tempdr)
 {
     oParam.SysNo = Util.TrimIntNull(tempdr["SysNo"]);
     oParam.OrderType = Util.TrimIntNull(tempdr["OrderType"]);
     oParam.OrderSysNo = Util.TrimIntNull(tempdr["OrderSysNo"]);
     oParam.OrderAmt = Util.TrimDecimalNull(tempdr["OrderAmt"]);
     oParam.IncomeStyle = Util.TrimIntNull(tempdr["IncomeStyle"]);
     oParam.IncomeAmt = Util.TrimDecimalNull(tempdr["IncomeAmt"]);
     oParam.IncomeTime = Util.TrimDateNull(tempdr["IncomeTime"]);
     oParam.IncomeUserSysNo = Util.TrimIntNull(tempdr["IncomeUserSysNo"]);
     oParam.ConfirmTime = Util.TrimDateNull(tempdr["ConfirmTime"]);
     oParam.ConfirmUserSysNo = Util.TrimIntNull(tempdr["ConfirmUserSysNo"]);
     oParam.Note = Util.TrimNull(tempdr["Note"]);
     oParam.Status = Util.TrimIntNull(tempdr["Status"]);
 }
예제 #5
0
파일: NetPayManager.cs 프로젝트: ue96/ue96
        public void Verify(int netpaySysNo, int userSysNo)
        {
            TransactionOptions options = new TransactionOptions();
            options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            options.Timeout = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {
                NetPayInfo dbInfo = Load(netpaySysNo);
                if ( dbInfo.Status != (int)AppEnum.NetPayStatus.Origin)
                    throw new BizException("netpay: not origin, can't verify");

                dbInfo.Status = (int)AppEnum.NetPayStatus.Verified;

                Hashtable ht = new Hashtable(5);
                ht.Add("SysNo", dbInfo.SysNo);
                ht.Add("ApproveUserSysNo", userSysNo);
                ht.Add("ApproveTime", DateTime.Now);
                ht.Add("Status", dbInfo.Status);

                new NetPayDac().Update(ht);

                //so income ��Ψһ���DZ߻��жϵ�
                SOIncomeInfo oIncome = new SOIncomeInfo();
                oIncome.OrderType = (int)AppEnum.SOIncomeOrderType.SO;
                oIncome.OrderSysNo = dbInfo.SOSysNo;
                oIncome.OrderAmt = dbInfo.PayAmount;
                oIncome.IncomeStyle = (int)AppEnum.SOIncomeStyle.Advanced;
                oIncome.IncomeAmt = dbInfo.PayAmount;
                oIncome.IncomeUserSysNo = userSysNo;
                oIncome.IncomeTime = DateTime.Now;
                oIncome.Status = (int)AppEnum.SOIncomeStatus.Origin;

                SOIncomeManager.GetInstance().Insert(oIncome);

                scope.Complete();
            }
        }
예제 #6
0
        public void Update(SOIncomeInfo oParam)
        {
            TransactionOptions options = new TransactionOptions();
            options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            options.Timeout = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {

                SOIncomeInfo dbInfo = Load(oParam.SysNo);
                if (dbInfo.Status != (int)AppEnum.SOIncomeStatus.Origin)
                    throw new BizException("soincome: only origin status can update");

                Hashtable ht = new Hashtable(2);
                ht.Add("SysNo", oParam.SysNo);
                ht.Add("Note", oParam.Note);
                new SOIncomeDac().Update(ht);

                scope.Complete();
            }
        }
예제 #7
0
        public SOIncomeInfo load(string sql)
        {
            SOIncomeInfo oInfo = null;
            TransactionOptions options = new TransactionOptions();
            options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            options.Timeout = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {

                DataSet ds = SqlHelper.ExecuteDataSet(sql);
                if (Util.HasMoreRow(ds))
                {
                    oInfo = new SOIncomeInfo();
                    map(oInfo, ds.Tables[0].Rows[0]);
                }
                scope.Complete();
            }
            return oInfo;
        }
예제 #8
0
        public void Insert(SOIncomeInfo oParam)
        {
            TransactionOptions options = new TransactionOptions();
            options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            options.Timeout = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {
                SOIncomeInfo dbInfo = LoadValid(oParam.OrderType, oParam.OrderSysNo);
                if (dbInfo != null)
                    throw new BizException("soincome: record exist already, insert failed");

                new SOIncomeDac().Insert(oParam);

                if (oParam.OrderType == (int)AppEnum.SOIncomeOrderType.SO)
                    SaleManager.GetInstance().PaySO(oParam.OrderSysNo);

                scope.Complete();
            }
        }
예제 #9
0
        public void Import()
        {
            if (!AppConfig.IsImportable)
                throw new BizException("Is Importable is false");

            string sql = " select top 1 sysno from finance_soincome";
            DataSet ds = SqlHelper.ExecuteDataSet(sql);
            if (Util.HasMoreRow(ds))
                throw new BizException("the table finance_soincome is not empty");

            TransactionOptions options = new TransactionOptions();
            options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            options.Timeout = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {

                //1 ��ԭ�����տ���룬
                //2 ������Ӧ�ն�û���տ�ģ���Ϊԭ������һ���Ӧ�ռ�¼��׼ȷ�ģ�
                //  �����ⲿ�ֵ���Դ�� so�Ѿ������û���տ�ģ������տ
                // ???
                UserInfo oUser = SysManager.GetInstance().LoadUser("0061");

                string sql2 = @"select
                                    0 as sysno, ordertype, SOorUTSysNo as ordersysno,
                                    incomeamt as orderamt,
                                    incomeamt_local as incomeamt,
                                    incometype as incomestyle,
                                    createtime as incometime,
                                    con_user1.newsysno as incomeUserSysNo,
                                    con_user2.newsysno as confirmUserSysNo,
                                    null as confirmTime,
                                    note,
                                    status
                                from
                                    ipp2003..so_income as so_income,
                                    ippConvert..sys_user as con_user1,
                                    ippConvert..sys_user as con_user2
                                where
                                    so_income.createusersysno *= con_user1.oldsysno
                                and	so_income.accountsysno *= con_user2.oldsysno
                                order by so_income.ordersysno asc, so_income.status desc";
                DataSet ds2 = SqlHelper.ExecuteDataSet(sql2);

                int lastsosysno = AppConst.IntNull;
                bool gotvalid = false; //����ж���valid��orign �� confirm��ֻ�ܵ���һ��
                foreach (DataRow dr in ds2.Tables[0].Rows)
                {
                    SOIncomeInfo item = new SOIncomeInfo();
                    map(item, dr);

                    //��ǰ����һ���µ�sosysno
                    if (lastsosysno != item.OrderSysNo)
                    {
                        lastsosysno = item.OrderSysNo;
                        gotvalid = false;
                    }

                    /*old
                     * IncomeType 0:���� 1:Ԥ�� 2:�˿�
                     * ordertype 0: so, 1: ro
                     * status 0: ��ȷ�� -1:���� -2:δȷ��
                     */

                    if (item.OrderType == 0)
                        item.OrderType = (int)AppEnum.SOIncomeOrderType.SO;
                    else if (item.OrderType == 1)
                        item.OrderType = (int)AppEnum.SOIncomeOrderType.RO;
                    else
                        throw new BizException("no such order type");

                    if (item.IncomeStyle == 0)
                        item.IncomeStyle = (int)AppEnum.SOIncomeStyle.Normal;
                    else if (item.IncomeStyle == 1)
                        item.IncomeStyle = (int)AppEnum.SOIncomeStyle.Advanced;
                    else if (item.IncomeStyle == 2)
                        item.IncomeStyle = (int)AppEnum.SOIncomeStyle.RO;
                    else
                        throw new BizException("no such imcometype");

                    if (item.Status == -1)
                        item.Status = (int)AppEnum.SOIncomeStatus.Abandon;
                    else if (item.Status == -2)
                    {
                        item.Status = (int)AppEnum.SOIncomeStatus.Origin;
                    }
                    else if (item.Status == 0)
                    {
                        item.Status = (int)AppEnum.SOIncomeStatus.Confirmed;
                    }
                    else
                        throw new BizException("no such status");

                    if (item.IncomeUserSysNo == AppConst.IntNull)
                        item.IncomeUserSysNo = oUser.SysNo;
                    if (item.ConfirmUserSysNo != AppConst.IntNull)
                        item.ConfirmTime = DateTime.Now;

                    if (item.Status == (int)AppEnum.SOIncomeStatus.Abandon
                        || !gotvalid)
                    {
                        new SOIncomeDac().Insert(item);
                        if (item.Status == (int)AppEnum.SOIncomeStatus.Origin
                            || item.Status == (int)AppEnum.SOIncomeStatus.Confirmed)
                            gotvalid = true;
                    }
                }

                /*
                 *  ��������µ�������������⣬sql1�����õ���cashamt, ���������so�Ļ����ֽ�֧�����֡�
                 *  ����������������� 2005.05.18 18:42 by marco
                 * update finance_soincome
                    set
                        orderamt = round(cashamt+shipprice+premiumamt+payprice,2),
                        incomeamt = round(cashamt+shipprice+premiumamt+payprice,2)

                                                    from
                                                        ipp2003..so_master so,
                                                        ippConvert..sys_user as con_user
                                                    where
                                                        so.warehouseUserSysNo =con_user.oldsysno
                                                    and	so.status = 4
                                                    and so.soid not in
                                                        ( select soOrUtid from ipp2003..so_income where ordertype = 0)
                                                    and outtime >= '2003-08-07'
                        and so.sysno = ordersysno and ordertype = 1
                 */
                string sql1 = @"select
                                    0 as sysno, 0 as orderType, so.sysno as orderSysNo,
                                    cashamt as orderamt,
                                    0 as incomestyle,
                                    cashamt as incomeamt,
                                    outtime as incometime,
                                    con_user.newsysno as incomeusersysno,
                                    null as confirmtime,
                                    null as confirmusersysno,
                                    'ipp3����' as note,
                                    0 as status
                                from
                                    ipp2003..so_master so,
                                    ippConvert..sys_user as con_user
                                where
                                    so.warehouseUserSysNo =con_user.oldsysno
                                and	so.status = 4
                                and so.soid not in
                                    ( select soOrUtid from ipp2003..so_income where ordertype = 0)
                                and outtime >= '2003-08-07'";
                DataSet ds1 = SqlHelper.ExecuteDataSet(sql1);
                if (!Util.HasMoreRow(ds1))
                    return;
                foreach (DataRow dr in ds1.Tables[0].Rows)
                {
                    SOIncomeInfo item = new SOIncomeInfo();
                    map(item, dr);
                    item.OrderType = (int)AppEnum.SOIncomeOrderType.SO;
                    item.IncomeStyle = (int)AppEnum.SOIncomeStyle.Normal;
                    item.Status = (int)AppEnum.SOIncomeStatus.Origin;
                    new SOIncomeDac().Insert(item);
                }

                scope.Complete();
            }
        }
예제 #10
0
파일: ROManager.cs 프로젝트: ue96/ue96
        public void ReturnRO(ROInfo roInfo)
        {
            TransactionOptions options = new TransactionOptions();
            options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            options.Timeout = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {
                if (this.GetROCurrentStatus(roInfo.SysNo) != (int)AppEnum.ROStatus.Audited)
                    throw new BizException("This RO is not Audited now ,can't be returned");
                roInfo.Status = (int)AppEnum.ROStatus.Returned;
                //update ro status
                Hashtable paramHash = new Hashtable(4);
                paramHash.Add("Status", roInfo.Status);
                paramHash.Add("ReturnTime", roInfo.ReturnTime);
                paramHash.Add("ReturnUserSysNo", roInfo.ReturnUserSysNo);
                paramHash.Add("SysNo", roInfo.SysNo);
                this.UpdateROMaster(paramHash);
                //update inventory
                foreach (ROItemInfo roItem in roInfo.ItemHash.Values)
                {
                    //UnitCostManager.GetInstance().SetCost(roItem.ProductSysNo, roItem.Quantity, roItem.Cost); //Serious bug 2007-07-21
                    //�˻�ʱ��Ӱ��һ����Ʒ�ijɱ���ֻ��Ҫ�޸Ķ�����Ʒ�ijɱ�
                    UnitCostManager.GetInstance().SetCost(roItem.ReturnSysNo, roItem.Quantity, roItem.Cost);
                    InventoryManager.GetInstance().SetInStockQty(roInfo.StockSysNo, roItem.ReturnSysNo, roItem.Quantity);
                }
                //update customer score
                RMAInfo oRMA = RMAManager.GetInstance().LoadMaster(roInfo.RMASysNo);
                //�Ƚ����۵����û��ּ���
                PointManager.GetInstance().DoDelayPointSingle(oRMA.SOSysNo);
                //Ȼ���ȥ�˻���Ӧ����
                if (roInfo.PointAmt != 0)
                {
                    PointManager.GetInstance().SetScore(oRMA.CustomerSysNo, roInfo.PointAmt * (-1), (int)AppEnum.PointLogType.ReturnProduct, roInfo.SysNo.ToString());
                }
                //�����տ
                //�������Ч���տ-->����soincome(normal, origin)
                SOIncomeInfo soIncome = SOIncomeManager.GetInstance().LoadValid((int)AppEnum.SOIncomeOrderType.RO, roInfo.SysNo);
                if (soIncome == null)//����Ч�տ�������տ
                {
                    soIncome = new SOIncomeInfo();
                    soIncome.OrderType = (int)AppEnum.SOIncomeOrderType.RO;
                    soIncome.OrderSysNo = roInfo.SysNo;
                    soIncome.OrderAmt = soIncome.IncomeAmt = Util.TruncMoney(roInfo.CashAmt + roInfo.RedeemAmt);
                    soIncome.IncomeStyle = (int)AppEnum.SOIncomeStyle.Normal;
                    soIncome.IncomeUserSysNo = roInfo.ReturnUserSysNo;
                    soIncome.IncomeTime = DateTime.Now;
                    soIncome.Status = (int)AppEnum.SOIncomeStatus.Origin;
                    SOIncomeManager.GetInstance().Insert(soIncome);
                }
                scope.Complete();
            }
        }