Exemple #1
0
 public void RefreshHead(string frmName)
 {
     if (frmName == "FrmOutStoreDetailDW")
     {
         if (billStatus == DGEnum.BillEditStatus.ADD_STATUS)
         {
             DW_OutStoreHead editHead = frmOutstoreDetailDW.GetInHeadInfoDW();
             currentDWHead.BillTime    = editHead.BillTime;
             currentDWHead.ToDeptID    = editHead.ToDeptID;
             currentDWHead.Remark      = editHead.Remark;
             currentDWHead.BusiType    = editHead.BusiType;
             currentDWHead.LostReason  = editHead.LostReason;
             currentDWHead.ApplyHeadId = editHead.ApplyHeadId;
         }
     }
     else
     {
         if (billStatus == DGEnum.BillEditStatus.ADD_STATUS)
         {
             DS_OutStoreHead editHead = frmOutstoreDetailDS.GetHeadInfoDS();
             currentDSHead.BillTime = editHead.BillTime;
             currentDSHead.ToDeptID = editHead.ToDeptID;
             currentDSHead.Remark   = editHead.Remark;
             currentDSHead.BusiType = editHead.BusiType;
         }
     }
 }
        /// <summary>
        /// 台账写入
        /// </summary>
        /// <typeparam name="THead">药库出库单表头模板</typeparam>
        /// <typeparam name="TDetail">药库出库单明细模板</typeparam>
        /// <param name="billHead">药库出库单表头</param>
        /// <param name="billDetails">药库出库单明细</param>
        /// <param name="storeResult">库存处理结果</param>
        public override void WriteAccount <THead, TDetail>(THead billHead, TDetail billDetails, DGStoreResult storeResult)
        {
            DW_OutStoreDetail detail = billDetails as DW_OutStoreDetail;
            DW_OutStoreHead   head   = billHead as DW_OutStoreHead;
            int    actYear;
            int    actMonth;
            string errMsg;

            if (!GetAccountTime(head.DeptID, out errMsg, out actYear, out actMonth))
            {
                throw new Exception(errMsg);
            }

            DW_Account account = NewObject <DW_Account>();

            account.BalanceYear  = actYear;
            account.BalanceMonth = actMonth;
            account.AccountType  = 0;
            account.BalanceFlag  = 0;
            account.BillNO       = detail.BillNO;
            account.BatchNO      = detail.BatchNO;
            account.BillNO       = detail.BillNO;
            account.BusiType     = head.BusiType;
            account.CTypeID      = detail.CTypeID;
            account.DeptID       = head.DeptID;
            account.DetailID     = detail.OutDetailID;
            account.DrugID       = detail.DrugID;
            account.UnitID       = detail.UnitID;
            account.UnitName     = detail.UnitName;
            account.DebitAmount  = detail.Amount;//贷方数量
            account.RegTime      = System.DateTime.Now;
            if (head.BusiType == DGConstant.OP_DW_BACKSTORE)
            {
                account.StockPrice     = storeResult.BatchAllot[0].StockPrice;
                account.RetailPrice    = storeResult.BatchAllot[0].RetailPrice;
                account.DebitAmount    = detail.Amount;
                account.DebitRetailFee = account.DebitAmount * account.RetailPrice;
                account.DebitStockFee  = account.DebitAmount * account.StockPrice;
                account.OverAmount     = storeResult.BatchAllot[0].StoreAmount;
                account.OverRetailFee  = storeResult.BatchAllot[0].StoreAmount * storeResult.BatchAllot[0].RetailPrice;
                account.OverStockFee   = storeResult.BatchAllot[0].StoreAmount * storeResult.BatchAllot[0].StockPrice;
            }
            else
            {
                account.StockPrice     = detail.StockPrice;
                account.RetailPrice    = detail.RetailPrice;
                account.DebitAmount    = detail.Amount;
                account.DebitRetailFee = detail.RetailFee;
                account.DebitStockFee  = detail.StockFee;
                account.OverAmount     = storeResult.BatchAllot[0].StoreAmount;
                account.OverRetailFee  = storeResult.BatchAllot[0].StoreAmount * account.RetailPrice;
                account.OverStockFee   = storeResult.BatchAllot[0].StoreAmount * account.StockPrice;
            }

            account.save();
        }
        /// <summary>
        /// 删除药库出库单
        /// </summary>
        /// <param name="billID">药库出库单表头ID</param>
        public override void DeleteBill(int billID)
        {
            DW_OutStoreHead inHead = (DW_OutStoreHead)NewObject <DW_OutStoreHead>().getmodel(billID);

            if (inHead.AuditFlag == 1)
            {
                throw new Exception("当前单据已经审核,无法删除");
            }
            else
            {
                inHead.DelFlag = 1;
                inHead.save();
            }
        }
Exemple #4
0
        /// <summary>
        /// 药库出库头转药房出库头
        /// </summary>
        /// <param name="dwhead">药库出库主实体</param>
        /// <param name="userId">操作用户ID</param>
        /// <param name="userName">操作用户名</param>
        /// <returns>药房出库头对象集</returns>
        public DS_OutStoreHead ConvertOutFromDwOutHead(DW_OutStoreHead dwhead, int userId, string userName)
        {
            DS_OutStoreHead dshead = new DS_OutStoreHead();

            dshead.DelFlag        = 0;
            dshead.BusiType       = DGConstant.OP_DS_RETURNSOTRE;
            dshead.BillTime       = System.DateTime.Now;
            dshead.DeptID         = dwhead.ToDeptID;
            dshead.RegEmpID       = userId;
            dshead.RegEmpName     = userName;
            dshead.RegTime        = DateTime.Now;
            dshead.StockFee       = dwhead.StockFee;
            dshead.RetailFee      = dwhead.RetailFee;
            dshead.OutStoreHeadID = dwhead.OutStoreHeadID;
            return(dshead);
        }
Exemple #5
0
        /// <summary>
        /// 药库出库头转药房入库头
        /// </summary>
        /// <param name="dwhead">药库出库主实体</param>
        /// <param name="userId">操作用户ID</param>
        /// <param name="userName">操作用户名</param>
        /// <param name="bussType">业务类型</param>
        /// <returns>入库头对象</returns>
        public DS_InstoreHead ConvertInFromDWOutHead(DW_OutStoreHead dwhead, int userId, string userName, string bussType)
        {
            DS_InstoreHead dshead = new DS_InstoreHead();

            dshead.DelFlag        = 0;
            dshead.BusiType       = bussType;
            dshead.BillTime       = System.DateTime.Now;
            dshead.DeptID         = dwhead.ToDeptID;
            dshead.RegEmpID       = userId;
            dshead.RegEmpName     = userName;
            dshead.RegTime        = DateTime.Now;
            dshead.StockFee       = dwhead.StockFee;
            dshead.RetailFee      = dwhead.RetailFee;
            dshead.OutStoreHeadID = dwhead.OutStoreHeadID;
            return(dshead);
        }
        /// <summary>
        /// 从界面获取药库入库表头信息
        /// </summary>
        /// <returns>药库入库表头信息</returns>
        public DW_OutStoreHead GetInHeadInfoDW()
        {
            DW_OutStoreHead inHead = new DW_OutStoreHead();

            frmCommon.GetValue <DW_OutStoreHead>(inHead);
            DataTable dt = (DataTable)dgDetails.DataSource;

            if (IsApplyStatus == true)
            {
                if (dt != null && dt.Rows.Count > 0 && dt.Rows[0]["ApplyHeadID"] != null)
                {
                    inHead.ApplyHeadId = Convert.ToInt32(dt.Rows[0]["ApplyHeadID"].ToString());
                }
            }

            return(inHead);
        }
        public ServiceResponseData GetEditBillHead()
        {
            string belongSys = requestData.GetData <string>(0);
            int    billID    = requestData.GetData <int>(1);

            if (belongSys == DGConstant.OP_DW_SYSTEM)
            {
                DW_OutStoreHead head = (DW_OutStoreHead)NewObject <DW_OutStoreHead>().getmodel(billID);
                responseData.AddData(head);
            }
            else
            {
                DS_OutStoreHead head = (DS_OutStoreHead)NewObject <DS_OutStoreHead>().getmodel(billID);
                responseData.AddData(head);
            }

            return(responseData);
        }
        /// <summary>
        /// 保存药库出库单
        /// </summary>
        /// <typeparam name="THead">药库出库单表头模板</typeparam>
        /// <typeparam name="TDetail">药库出库单明细模板</typeparam>
        /// <param name="billHead">药库出库单表头</param>
        /// <param name="billDetails">药库出库单明细</param>
        public override void SaveBill <THead, TDetail>(THead billHead, List <TDetail> billDetails)
        {
            DW_OutStoreHead          inHead   = billHead as DW_OutStoreHead;
            List <DW_OutStoreDetail> inDetals = billDetails as List <DW_OutStoreDetail>;

            inHead.RegTime = System.DateTime.Now;
            string serialNO = NewObject <SerialNumberSource>().GetSerialNumber(SnType.药品, inHead.DeptID, inHead.BusiType);

            inHead.BillNO = Convert.ToInt64(serialNO);
            BindDb(inHead);
            inHead.save();
            if (inHead.OutStoreHeadID > 0)
            {
                foreach (DW_OutStoreDetail detail in inDetals)
                {
                    detail.OutHeadID = inHead.OutStoreHeadID;
                    detail.BillNO    = inHead.BillNO;
                    BindDb(detail);
                    detail.save();
                }
            }
        }
        /// <summary>
        /// 获取头表信息
        /// </summary>
        /// <param name="opType">业务类型</param>
        /// <param name="deptId">科室Id</param>
        /// <param name="detailID">明细Id</param>
        /// <returns>头表信息</returns>
        public BillMasterShower GetBillHeadInfo(string opType, int deptId, int detailID)
        {
            BillMasterShower shower = new BillMasterShower();

            switch (opType)
            {
            case "111":    //采购入库
            case "112":    //期初入库
            case "113":    //药库退货
                DW_InStoreDetail inStoreDetail = (DW_InStoreDetail)NewObject <DW_InStoreDetail>().getmodel(detailID);
                if (inStoreDetail != null)
                {
                    DW_InStoreHead instoreHead = (DW_InStoreHead)NewObject <DW_InStoreHead>().getmodel(inStoreDetail.InHeadID);
                    if (instoreHead != null)
                    {
                        shower.RegTime          = instoreHead.RegTime;
                        shower.AuditTime        = instoreHead.AuditTime;
                        shower.BillNo           = instoreHead.BillNo.ToString();
                        shower.RelationPeopleNo = instoreHead.OpEmpID.ToString();
                        shower.RelationPeople   = instoreHead.OpEmpName;
                        shower.RelationUnit     = instoreHead.SupplierName;
                        shower.RetailFee        = instoreHead.RetailFee;
                        shower.StockFee         = instoreHead.StockFee;
                        shower.OpType           = GetBusiTypeName(opType);
                        shower.RegPeople        = instoreHead.RegEmpName;
                        shower.Remark           = instoreHead.Remark;
                    }
                }

                break;

            case "121":    //流通出库
            case "122":    //内耗出库
            case "123":    //药库报损
            case "124":    //药库退库
                DW_OutStoreDetail outStoreDetail = (DW_OutStoreDetail)NewObject <DW_OutStoreDetail>().getmodel(detailID);
                if (outStoreDetail != null)
                {
                    DW_OutStoreHead outStoreHead = (DW_OutStoreHead)NewObject <DW_OutStoreHead>().getmodel(outStoreDetail.OutHeadID);
                    if (outStoreHead != null)
                    {
                        shower.RegTime          = outStoreHead.RegTime;
                        shower.AuditTime        = outStoreHead.AuditTime;
                        shower.BillNo           = outStoreHead.BillNO.ToString();
                        shower.RelationPeopleNo = "暂无";
                        shower.RelationPeople   = "暂无";
                        shower.RelationUnit     = outStoreHead.ToDeptName;
                        shower.RetailFee        = outStoreHead.RetailFee;
                        shower.StockFee         = outStoreHead.StockFee;
                        shower.OpType           = GetBusiTypeName(opType);
                        shower.RegPeople        = outStoreHead.RegEmpName;
                        shower.Remark           = outStoreHead.Remark;
                    }
                }

                break;

            case "142":    //盘点审核
                DW_AuditDetail auditDetail = (DW_AuditDetail)NewObject <DW_AuditDetail>().getmodel(detailID);
                if (auditDetail != null)
                {
                    DW_AuditHead auditHead = (DW_AuditHead)NewObject <DW_AuditHead>().getmodel(auditDetail.AuditHeadID);
                    if (auditHead != null)
                    {
                        shower.RegTime          = auditHead.AuditTime;
                        shower.AuditTime        = auditHead.AuditTime;
                        shower.BillNo           = auditHead.BillNO.ToString();
                        shower.RelationPeopleNo = auditHead.EmpID.ToString();
                        shower.RelationPeople   = auditHead.EmpName;
                        shower.RelationUnit     = GetDeptName(auditHead.DeptID);
                        shower.RetailFee        = auditHead.CheckRetailFee;
                        shower.StockFee         = auditHead.CheckStockFee;
                        shower.OpType           = GetBusiTypeName(opType);
                        shower.RegPeople        = auditHead.EmpName;
                        shower.Remark           = string.Empty;
                    }
                }

                break;

            case "151":    //药库调价
                DG_AdjDetail adjDetail = (DG_AdjDetail)NewObject <DG_AdjDetail>().getmodel(detailID);
                if (adjDetail != null)
                {
                    DG_AdjHead adjHead = (DG_AdjHead)NewObject <DG_AdjHead>().getmodel(adjDetail.AdjHeadID);
                    if (adjHead != null)
                    {
                        shower.RegTime          = adjHead.RegTime;
                        shower.AuditTime        = adjHead.ExecTime;
                        shower.BillNo           = adjHead.BillNO.ToString();
                        shower.RelationPeopleNo = adjHead.RegEmpID.ToString();
                        shower.RelationPeople   = GetEmpName(adjHead.RegEmpID);
                        shower.RelationUnit     = GetDeptName(adjHead.DeptID);
                        shower.RetailFee        = 0;
                        shower.StockFee         = 0;
                        shower.OpType           = GetBusiTypeName(opType);
                        shower.RegPeople        = GetEmpName(adjHead.RegEmpID);
                        shower.Remark           = adjHead.Remark;
                    }
                }

                break;
            }

            return(shower);
        }
Exemple #10
0
        public bool InitBillHead(string frmName, DGEnum.BillEditStatus billEditStatus, int currentBillID)
        {
            if (LoginUserInfo.DeptId == 0)
            {
                MessageBoxShowSimple("用户没有选择登录科室");
                return(false);
            }

            billStatus = billEditStatus;
            if (frmName == "FrmOutStoreDW")
            {
                if (billStatus == DGEnum.BillEditStatus.ADD_STATUS)
                {
                    DW_OutStoreHead outHead = new DW_OutStoreHead();
                    outHead.AuditFlag    = 0;
                    outHead.AuditEmpID   = 0;
                    outHead.AuditEmpName = string.Empty;
                    outHead.Remark       = string.Empty;
                    outHead.DeptID       = selectedDeptID;
                    outHead.BusiType     = DGConstant.OP_DW_DEPTDRAW;//默认内耗流通出库
                    outHead.BillTime     = System.DateTime.Now;
                    outHead.RegTime      = System.DateTime.Now;
                    outHead.RegEmpID     = GetUserInfo().EmpId;
                    outHead.RegEmpName   = GetUserInfo().EmpName;
                    currentDWHead        = outHead;
                    frmOutstoreDetailDW.BindInHeadInfo(currentDWHead);
                }
                else
                {
                    Action <ClientRequestData> requestAction = ((ClientRequestData request) =>
                    {
                        request.AddData(DGConstant.OP_DW_SYSTEM);
                        request.AddData(currentBillID);
                    });
                    ServiceResponseData retdata     = InvokeWcfService("DrugProject.Service", "OutStoreController", "GetEditBillHead", requestAction);
                    DW_OutStoreHead     inStoreHead = retdata.GetData <DW_OutStoreHead>(0);
                    currentDWHead = inStoreHead;
                    if (currentDWHead.ApplyHeadId != 0)
                    {
                        frmOutstoreDetailDW.IsApplyStatus = true;
                    }

                    frmOutstoreDetailDW.BindInHeadInfo(currentDWHead);
                }

                frmOutstoreDetailDW.InitControStatus(billEditStatus);
            }
            else
            {
                if (billStatus == DGEnum.BillEditStatus.ADD_STATUS)
                {
                    DS_OutStoreHead outHead = new DS_OutStoreHead();
                    outHead.AuditFlag    = 0;
                    outHead.AuditEmpID   = 0;
                    outHead.AuditEmpName = string.Empty;
                    outHead.Remark       = string.Empty;
                    outHead.DeptID       = selectedDeptID;
                    outHead.BusiType     = DGConstant.OP_DS_DEPTDRAW;//默认内耗流通出库
                    outHead.BillTime     = System.DateTime.Now;
                    outHead.RegTime      = System.DateTime.Now;
                    outHead.RegEmpID     = GetUserInfo().EmpId;
                    outHead.RegEmpName   = GetUserInfo().EmpName;
                    currentDSHead        = outHead;
                    frmOutstoreDetailDS.BindInHeadInfo(currentDSHead);
                }
                else
                {
                    Action <ClientRequestData> requestAction = ((ClientRequestData request) =>
                    {
                        request.AddData(DGConstant.OP_DS_SYSTEM);
                        request.AddData(currentBillID);
                    });
                    ServiceResponseData retdata      = InvokeWcfService("DrugProject.Service", "OutStoreController", "GetEditBillHead", requestAction);
                    DS_OutStoreHead     outStoreHead = retdata.GetData <DS_OutStoreHead>(0);
                    outStoreHead.DeptID = selectedDeptID;
                    currentDSHead       = outStoreHead;
                    frmOutstoreDetailDS.BindInHeadInfo(currentDSHead);
                }

                frmOutstoreDetailDS.InitControStatus(billEditStatus);
            }

            return(true);
        }
        /// <summary>
        /// 审核药库出库单
        /// </summary>
        /// <param name="headID">药库出库单表头ID</param>
        /// <param name="auditEmpID">审核人ID</param>
        /// <param name="auditEmpName">审核人姓名</param>
        /// <returns>单据处理结果</returns>
        public override DGBillResult AuditBill(int headID, int auditEmpID, string auditEmpName)
        {
            DW_OutStoreHead outHead = (DW_OutStoreHead)NewObject <DW_OutStoreHead>().getmodel(headID);

            outHead.AuditEmpID   = auditEmpID;
            outHead.AuditEmpName = auditEmpName;
            outHead.AuditTime    = System.DateTime.Now;
            outHead.AuditFlag    = 1;
            outHead.save();
            List <DW_OutStoreDetail> lstDetails = NewObject <DW_OutStoreDetail>().getlist <DW_OutStoreDetail>("OutHeadID=" + headID);
            DGBillResult             result     = new DGBillResult();

            foreach (var outDeatils in lstDetails)
            {
                StoreParam storeParam = new StoreParam();
                storeParam.Amount       = outDeatils.Amount;
                storeParam.BatchNO      = outDeatils.BatchNO;
                storeParam.DeptID       = outDeatils.DeptID;
                storeParam.DrugID       = outDeatils.DrugID;
                storeParam.RetailPrice  = outDeatils.RetailPrice;
                storeParam.StockPrice   = outDeatils.StockPrice;
                storeParam.UnitID       = outDeatils.UnitID;
                storeParam.UnitName     = outDeatils.UnitName;
                storeParam.ValidityTime = outDeatils.ValidityDate;
                DGStoreResult storeRtn = iStore.ReduceStore(storeParam);
                if (storeRtn.Result != 0)
                {
                    result.Result = 1;
                    if (storeRtn.Result == 1)
                    {
                        result.LstNotEnough = new List <DGNotEnough>();
                        DGNotEnough notEnough = new DGNotEnough();
                        notEnough.DeptID     = outHead.DeptID;
                        notEnough.DrugID     = outDeatils.DrugID;
                        notEnough.LackAmount = outDeatils.Amount - storeRtn.StoreAmount;
                        notEnough.DrugInfo   = "药品批次号:" + outDeatils.BatchNO;
                        result.LstNotEnough.Add(notEnough);
                        result.ErrMsg = "【" + notEnough.DrugInfo + "】库存不足";
                    }
                    else
                    {
                        result.ErrMsg = "药品更新库存出错";
                    }

                    return(result);
                }
                else
                {
                    WriteAccount(outHead, outDeatils, storeRtn);
                }
            }

            if (outHead.BusiType == DGConstant.OP_DW_CIRCULATEOUT || outHead.BusiType == DGConstant.OP_DW_RETURNSTORE)
            {
                //流通出库业务和退库业务
                var                     t         = outHead.BusiType == DGConstant.OP_DW_CIRCULATEOUT ? DGConstant.OP_DS_CIRCULATEIN:DGConstant.OP_DS_RETURNSOTRE;
                DS_InstoreHead          dshead    = NewObject <DGBillConverter>().ConvertInFromDWOutHead(outHead, auditEmpID, auditEmpName, t);
                IDGBill                 iProcess  = NewObject <DGBillFactory>().GetBillProcess(t);
                List <DS_InStoreDetail> dsInStore = NewObject <DGBillConverter>().ConvertInFromDwStoreDetail(headID);
                iProcess.SaveBill(dshead, dsInStore);//药房入库
                Basic_SystemConfig config = NewObject <IDGDao>().GetDeptParameters(dshead.DeptID, "AutoAuditInstore");
                if (config != null)
                {
                    //药房是否需要审核
                    if (config.Value == "1")
                    {
                        result = iProcess.AuditBill(dshead.InHeadID, auditEmpID, auditEmpName);
                    }
                }
            }

            return(result);
        }
        public ServiceResponseData SaveBillFromApply()
        {
            string                   belongSys     = requestData.GetData <string>(0);
            string                   busiType      = requestData.GetData <string>(1);
            IDGBill                  iProcess      = NewObject <DGBillFactory>().GetBillProcess(busiType);
            DGBillResult             result        = new DGBillResult();
            DW_OutStoreHead          head          = requestData.GetData <DW_OutStoreHead>(2);
            List <DW_OutStoreDetail> details       = requestData.GetData <List <DW_OutStoreDetail> >(3);
            List <int>               deleteDetails = requestData.GetData <List <int> >(4);

            oleDb.BeginTransaction();
            try
            {
                foreach (int detailID in deleteDetails)
                {
                    NewObject <DW_OutStoreDetail>().delete(detailID);
                }

                iProcess.SaveBill(head, details);
                DS_ApplyHead applyHead = (DS_ApplyHead)NewObject <DS_ApplyHead>().getmodel(head.ApplyHeadId);
                applyHead.OutStoreHeadID = head.OutStoreHeadID;
                applyHead.AuditFlag      = 1;
                applyHead.AuditEmpID     = LoginUserInfo.EmpId;
                applyHead.AuditEmpName   = LoginUserInfo.EmpName;
                applyHead.AuditTime      = DateTime.Now;
                applyHead.save();

                foreach (var s in details)
                {
                    DS_ApplyDetail detailApply = NewObject <DS_ApplyDetail>().getlist <DS_ApplyDetail>("ApplyHeadId = " + applyHead.ApplyHeadID + " and DrugID=" + s.DrugID + " and BatchNO= '" + s.BatchNO + " '").FirstOrDefault();
                    if (detailApply != null)
                    {
                        detailApply.FactAmount = s.Amount;
                        detailApply.save();
                    }
                }

                Basic_SystemConfig config = NewObject <IDGDao>().GetDeptParameters(head.DeptID, "AutoAuditOutStore");
                if (config != null)
                {
                    //是否配置需要审核
                    if (config.Value == "1")
                    {
                        result = iProcess.AuditBill(head.OutStoreHeadID, LoginUserInfo.EmpId, LoginUserInfo.EmpName, LoginUserInfo.WorkId);
                    }
                }

                if (result.Result == 0)
                {
                    oleDb.CommitTransaction();
                }
                else
                {
                    oleDb.RollbackTransaction();
                }

                responseData.AddData(result);
            }
            catch (Exception error)
            {
                oleDb.RollbackTransaction();
                responseData.AddData(false);
                responseData.AddData(error.Message);
            }

            return(responseData);
        }
        public ServiceResponseData SaveBill()
        {
            string       belongSys = requestData.GetData <string>(0);
            string       busiType  = requestData.GetData <string>(1);
            IDGBill      iProcess  = NewObject <DGBillFactory>().GetBillProcess(busiType);
            DGBillResult result    = new DGBillResult();

            if (belongSys == DGConstant.OP_DW_SYSTEM)
            {
                DW_OutStoreHead          head    = requestData.GetData <DW_OutStoreHead>(2);
                List <DW_OutStoreDetail> details = requestData.GetData <List <DW_OutStoreDetail> >(3);
                List <int> deleteDetails         = requestData.GetData <List <int> >(4);
                //oleDb.BeginTransaction();
                try
                {
                    foreach (int detailID in deleteDetails)
                    {
                        NewObject <DW_OutStoreDetail>().delete(detailID);
                    }

                    iProcess.SaveBill(head, details);
                    Basic_SystemConfig config = NewObject <IDGDao>().GetDeptParameters(head.DeptID, "AutoAuditOutStore");
                    if (config != null)
                    {
                        //是否配置需要审核
                        if (config.Value == "1")
                        {
                            result = iProcess.AuditBill(head.OutStoreHeadID, LoginUserInfo.EmpId, LoginUserInfo.EmpName, LoginUserInfo.WorkId);
                        }
                    }

                    /*if (result.Result == 0)
                     * {
                     *  oleDb.CommitTransaction();
                     * }
                     * else
                     * {
                     *  oleDb.RollbackTransaction();
                     * }*/

                    if (result.Result != 0)
                    {
                        throw new Exception(result.ErrMsg);
                    }

                    responseData.AddData(result);

                    //oleDb.CommitTransaction();
                    //responseData.AddData(true);
                }
                catch (Exception error)
                {
                    throw error;
                    //oleDb.RollbackTransaction();
                    //responseData.AddData(false);
                    //responseData.AddData(error.Message);
                }
            }
            else
            {
                //药房
                DS_OutStoreHead          head    = requestData.GetData <DS_OutStoreHead>(2);
                List <DS_OutStoreDetail> details = requestData.GetData <List <DS_OutStoreDetail> >(3);
                List <int> deleteDetails         = requestData.GetData <List <int> >(4);
                //oleDb.BeginTransaction();
                try
                {
                    foreach (int detailID in deleteDetails)
                    {
                        NewObject <DS_OutStoreDetail>().delete(detailID);
                    }

                    iProcess.SaveBill(head, details);
                    Basic_SystemConfig config = NewObject <IDGDao>().GetDeptParameters(head.DeptID, "AutoAuditOutStore");
                    if (config != null)
                    {
                        //是否需要审核
                        if (config.Value == "1")
                        {
                            result = iProcess.AuditBill(head.OutStoreHeadID, LoginUserInfo.EmpId, LoginUserInfo.EmpName, LoginUserInfo.WorkId);
                        }
                    }

                    /*if (result.Result == 0)
                     * {
                     *  oleDb.CommitTransaction();
                     * }
                     * else
                     * {
                     *  oleDb.RollbackTransaction();
                     * }*/

                    if (result.Result != 0)
                    {
                        throw new Exception(result.ErrMsg);
                    }

                    responseData.AddData(result);
                }
                catch (Exception error)
                {
                    throw error;
                    //oleDb.RollbackTransaction();
                    //responseData.AddData(false);
                    //responseData.AddData(error.Message);
                }
            }

            return(responseData);
        }