using Newtonsoft.Json; 
 | 
using Newtonsoft.Json.Linq; 
 | 
using System; 
 | 
using System.Data; 
 | 
using System.Web.Http; 
 | 
using WebAPI.Models; 
 | 
  
 | 
namespace WebAPI.Controllers 
 | 
{ 
 | 
    public class Kf_MoveStockBillController : ApiController 
 | 
    { 
 | 
        public DBUtility.ClsPub.Enum_BillStatus BillStatus; 
 | 
        public const string ModName = "1207";                               //单据类型 
 | 
        public const string ModCaption = "直接调拨单";                      //单据名称 
 | 
        public const string ModRightName = "Kf_MoveStockBill"; 
 | 
        public const string ModRightNameList = ModRightName + "List";       //列表 
 | 
        public const string ModRightNameEdit = ModRightName + "_Edit";      //编辑 
 | 
        public const string ModRightNameCheck = ModRightName + "_Check";    //审核 
 | 
        public const string ModRightNameClose = ModRightName + "_Close";    //关闭 
 | 
        public const string ModRightNameDelete = ModRightName + "_Delete";  //作废 
 | 
        public const string ModRightNameDrop = ModRightName + "_Drop";      //删除 
 | 
        public const string ModRightNameMoney = ModRightName + "_Money";    //金额 
 | 
        public const string ModRightNameQty = ModRightName + "_Qty";        //数量 
 | 
        public DataSet ds = new DataSet(); 
 | 
        private json objJsonResult = new json(); 
 | 
        SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); 
 | 
        Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter(); 
 | 
        public DAL.ClsKf_MoveStockBill oBill = new DAL.ClsKf_MoveStockBill(); 
 | 
  
 | 
  
 | 
        #region 根据单据号,同步直接调拨单 
 | 
        [Route("Kf_MoveStockBillController/GetKf_MoveStockBill_Sync_Json")] 
 | 
        [HttpGet] 
 | 
        public json GetKf_MoveStockBill_Sync_Json(string HBillNo, string HBillType) 
 | 
        { 
 | 
            try 
 | 
            { 
 | 
                //获取系统参数 
 | 
                string sql = string.Empty; 
 | 
                string sErrMsg = ""; 
 | 
                if (oSystemParameter.ShowBill(ref sErrMsg) == true) 
 | 
                { 
 | 
                    //系统参数是否为私有云模式,N为公有云模式,Y为私有云模式 
 | 
                    //私有云模式,通过调用存储过程进行同步 
 | 
                    if (oSystemParameter.omodel.WMS_CloudMode.ToUpper() == "Y") 
 | 
                    { 
 | 
                        ds = oCn.RunProcReturn("exec h_p_IFCLD_ERPSourceBillToLocal_MoveStock '" + HBillNo + "'", "h_p_IFCLD_ERPSourceBillToLocal_MoveStock"); 
 | 
                        if (ds == null || ds.Tables[0].Rows.Count == 0) 
 | 
                        { 
 | 
                            objJsonResult.code = "0"; 
 | 
                            objJsonResult.count = 0; 
 | 
                            objJsonResult.Message = "单据同步发生错误!"; 
 | 
                            objJsonResult.data = null; 
 | 
                            return objJsonResult; 
 | 
                        } 
 | 
                        else 
 | 
                        { 
 | 
                            if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) == 2) 
 | 
                            { 
 | 
                                objJsonResult.code = "0"; 
 | 
                                objJsonResult.count = 0; 
 | 
                                objJsonResult.Message = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]); 
 | 
                                objJsonResult.data = null; 
 | 
                                return objJsonResult; 
 | 
                            } 
 | 
                            else 
 | 
                            { 
 | 
                                objJsonResult.code = "0"; 
 | 
                                objJsonResult.count = 1; 
 | 
                                objJsonResult.Message = "单据同步成功!"; 
 | 
                                objJsonResult.data = null; 
 | 
                                return objJsonResult; 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                    //公有云模式,通过调用WEBAPI方式进行同步 
 | 
                    else if (oSystemParameter.omodel.WMS_CloudMode.ToUpper() == "N") 
 | 
                    { 
 | 
                        //判断金蝶云是否登录成功 
 | 
                        var loginRet = InvokeHelper.Login(); 
 | 
                        var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>(); 
 | 
                        //判断是否登录成功 
 | 
                        if (isSuccess <= 0) 
 | 
                        { 
 | 
                            objJsonResult.code = "0"; 
 | 
                            objJsonResult.count = 0; 
 | 
                            objJsonResult.Message = "同步失败,金蝶云登入不成功,请确认C盘配置文件所设置金蝶云对应网址、账套、登录用户、登录密码是否正确!"; 
 | 
                            objJsonResult.data = null; 
 | 
                            return objJsonResult; 
 | 
                        } 
 | 
  
 | 
                        var json = new 
 | 
                        { 
 | 
                            CreateOrgId = 0, 
 | 
                            Number = HBillNo, 
 | 
                            Id = "" 
 | 
                        }; 
 | 
                        //查看 获取数据                     
 | 
                        var _result = InvokeHelper.View("STK_TransferDirect", JsonConvert.SerializeObject(json)); 
 | 
                        var _saveObj = JObject.Parse(_result); 
 | 
                        //判断金蝶云数据是否获取成功 
 | 
                        if (_saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE") 
 | 
                        { 
 | 
                            objJsonResult.code = "0"; 
 | 
                            objJsonResult.count = 0; 
 | 
                            objJsonResult.Message = "金蝶云直接调拨单获取失败:" + _result; 
 | 
                            objJsonResult.data = null; 
 | 
                            return objJsonResult; 
 | 
                        } 
 | 
  
 | 
                        oCn.BeginTran(); 
 | 
                        //查找本地直接调拨单表中是否存在该单据,存在获取本单单据ID,不存在则获取最大单据ID 
 | 
                        Int64 HNewInterID = 0; 
 | 
                        ds = oCn.RunProcReturn("select HInterID from Kf_ICStockBillMain with(nolock) where HBillNo = '" + HBillNo + "' and HBillType='1207'", "Kf_ICStockBillMain"); 
 | 
                        if (ds == null || ds.Tables[0].Rows.Count == 0) 
 | 
                        { 
 | 
                            HNewInterID = DBUtility.ClsPub.CreateBillID_Prod(HBillType, ref sErrMsg); 
 | 
                        } 
 | 
                        else 
 | 
                        { 
 | 
                            HNewInterID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HInterID"]); 
 | 
                        } 
 | 
  
 | 
                        //根据单据号删除本地直接调拨单中对应单据 
 | 
                        oCn.RunProc("Delete b from Kf_ICStockBillMain a inner join Kf_ICStockBillSub b on a.HInterID=b.HInterID where a.HBillNo = '" + HBillNo + "' and a.HBillType='1207'", ref DBUtility.ClsPub.sExeReturnInfo); 
 | 
                        oCn.RunProc("Delete from Kf_ICStockBillMain where HBillNo = '" + HBillNo + "' and HBillType='1207'", ref DBUtility.ClsPub.sExeReturnInfo); 
 | 
  
 | 
                        //主表数据赋值 
 | 
                        var MainData = new 
 | 
                        { 
 | 
                            HInterID = HNewInterID, 
 | 
                            HBillNo = DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["BillNo"]), 
 | 
                            HBillType = "1207", 
 | 
                            HBillSubType = "1207", 
 | 
                            HMainSourceBillType = "", 
 | 
                            HDate = DBUtility.ClsPub.isDate(_saveObj["Result"]["Result"]["Date"]), 
 | 
                            HSupID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["SupplierID_Id"]), 
 | 
                            HWHID = 0, 
 | 
                            HSCWHID = 0, 
 | 
                            HEmpID = 0, 
 | 
                            HManagerID = 0, 
 | 
                            HSecManagerID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["SalerId_Id"]), 
 | 
                            HKeeperID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["StockerId_Id"]), 
 | 
                            HDeptID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["SaleDeptId_Id"]), 
 | 
                            HCurID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["CustID_Id"]), 
 | 
                            HSeOrderBillNo = "", 
 | 
                            HExplanation = "CLD导入", 
 | 
                            HRemark = DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["Note"]), 
 | 
                            HInnerBillNo = "", 
 | 
                            HRedBlueFlag = 0, 
 | 
                            HBillStatus = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["ApproverId_Id"]) == 0 ? 1 : 2, 
 | 
                            HMaker = DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["CreatorId"]["Name"]), 
 | 
                            HMakeDate = DBUtility.ClsPub.isDate(_saveObj["Result"]["Result"]["CreateDate"]), 
 | 
                            HChecker = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["ApproverId_Id"]) == 0 ? "" : DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["ApproverId"]["Name"]), 
 | 
                            HCheckDate = DBUtility.ClsPub.isDate(_saveObj["Result"]["Result"]["ApproveDate"]), 
 | 
                            HUpDater = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["ModifierId_Id"]) == 0 ? "" : DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["ModifierId"]["Name"]), 
 | 
                            HUpDateDate = DBUtility.ClsPub.isDate(_saveObj["Result"]["Result"]["ModifyDate"]), 
 | 
                            HDeleteMan = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["CANCELER_Id"]) == 0 ? "" : DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["CANCELER"]["Name"]), 
 | 
                            HDeleteDate = DBUtility.ClsPub.isDate(_saveObj["Result"]["Result"]["CancelDate"]), 
 | 
                            HStockStyle = DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["TransferBizType"]) == "InnerOrgTransfer" ? "组织内调拨" : "跨组织调拨", 
 | 
                            HOWNERID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["OwnerIdHead_Id"]), 
 | 
                            HOWNERTYPEID = DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["OwnerTypeIdHead"]), 
 | 
                            HERPInterID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["Id"]), 
 | 
                            HERPBillType = DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["BillTypeID_Id"]), 
 | 
                            HERPBillNo = DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["BillNo"]), 
 | 
                            HSTOCKINORGID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["StockOrgId_Id"]), 
 | 
                            HSTOCKOUTORGID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["StockOutOrgId_Id"]), 
 | 
                            HSALEORGID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["SaleOrgId_Id"]), 
 | 
                            HSETTLEORGID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["SettleOrgId_Id"]), 
 | 
                            HPRDORGID = 0, 
 | 
                            HSTOCKORGID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["StockOutOrgId_Id"]), 
 | 
                        }; 
 | 
                        //写入主表 
 | 
                        sql = $@"Insert into Kf_ICStockBillMain 
 | 
                                    (HInterID,HYear,HPeriod,HBillNo,HBillType,HBillSubType,HMainSourceBillType,HDate 
 | 
                                    ,HSupID,HWHID,HSCWHID,HEmpID,HManagerID,HSecManagerID,HKeeperID,HDeptID,HCurID 
 | 
                                    ,HSeOrderBillNo,HExplanation,HRemark,HInnerBillNo,HRedBlueFlag,HBillStatus 
 | 
                                    ,HMaker,HMakeDate 
 | 
                                    ,HChecker,HCheckDate 
 | 
                                    ,HUpDater,HUpDateDate 
 | 
                                    ,HDeleteMan,HDeleteDate 
 | 
                                    ,HStockStyle 
 | 
                                    ,HOWNERID,HOWNERTYPEID,HERPInterID,HERPBillType,HERPBillNo 
 | 
                                    ,HSTOCKINORGID,HSTOCKOUTORGID,HSALEORGID,HSETTLEORGID 
 | 
                                    ,HPRDORGID,HSTOCKORGID) 
 | 
                                    Values({MainData.HInterID},year('{MainData.HDate}'),month('{MainData.HDate}'),'{MainData.HBillNo}','{MainData.HBillType}','{MainData.HBillSubType}','{MainData.HMainSourceBillType}','{MainData.HDate}' 
 | 
                                    , {MainData.HSupID},{MainData.HWHID},{MainData.HSCWHID},{MainData.HEmpID},{MainData.HManagerID},{MainData.HSecManagerID},{MainData.HKeeperID},{MainData.HDeptID},{MainData.HCurID} 
 | 
                                    ,'{MainData.HSeOrderBillNo}','{MainData.HExplanation}','{MainData.HRemark}','{MainData.HInnerBillNo}',{MainData.HRedBlueFlag},{MainData.HBillStatus} 
 | 
                                    ,'{MainData.HMaker}','{MainData.HMakeDate}' 
 | 
                                    ,'{MainData.HChecker}',case when '{MainData.HCheckDate}' = '1900/1/1 0:00:00' then NULL else '{MainData.HCheckDate}' end 
 | 
                                    ,'{MainData.HUpDater}',case when '{MainData.HUpDateDate}' = '1900/1/1 0:00:00' then NULL else '{MainData.HUpDateDate}' end 
 | 
                                    ,'{MainData.HDeleteMan}',case when '{MainData.HDeleteDate}' = '1900/1/1 0:00:00' then NULL else '{MainData.HDeleteDate}' end 
 | 
                                    ,'{MainData.HStockStyle}' 
 | 
                                    , {MainData.HOWNERID},'{MainData.HOWNERTYPEID}',{MainData.HERPInterID},'{MainData.HERPBillType}','{MainData.HERPBillNo}' 
 | 
                                    , {MainData.HSTOCKINORGID},{MainData.HSTOCKOUTORGID},{MainData.HSALEORGID},{MainData.HSETTLEORGID} 
 | 
                                    , {MainData.HPRDORGID},{MainData.HSTOCKORGID})"; 
 | 
                        oCn.RunProc(sql.Replace("\r\n", "")); 
 | 
  
 | 
                        //子表数据赋值 
 | 
                        var dataArr = _saveObj["Result"]["Result"]["TransferDirectEntry"]; 
 | 
                        foreach (var oSub in dataArr) 
 | 
                        { 
 | 
                            var subData = new 
 | 
                            { 
 | 
                                HInterID = HNewInterID, 
 | 
                                HEntryID = DBUtility.ClsPub.isLong(oSub["Id"]), 
 | 
                                HMTONo = DBUtility.ClsPub.isStrNull(oSub["MtoNo"]), 
 | 
                                HPlanMode = 0, 
 | 
                                HRemark = DBUtility.ClsPub.isStrNull(oSub["NoteEntry"]), 
 | 
                                HExpressNumber = "", 
 | 
                                HMaterID = DBUtility.ClsPub.isLong(oSub["MaterialId_Id"]), 
 | 
                                HUnitID = DBUtility.ClsPub.isLong(oSub["UnitId_Id"]), 
 | 
                                HBatchNo = DBUtility.ClsPub.isStrNull(oSub["DestLot_Text"]), 
 | 
                                HPropertyID = DBUtility.ClsPub.isLong(oSub["AuxPropId_Id"]), 
 | 
                                HWHID = DBUtility.ClsPub.isLong(oSub["DestStockId_Id"]), 
 | 
                                HSPID = DBUtility.ClsPub.isLong(oSub["DestStockLocId_Id"]), 
 | 
                                HSCWHID = DBUtility.ClsPub.isLong(oSub["SrcStockId_Id"]), 
 | 
                                HSCSPID = DBUtility.ClsPub.isLong(oSub["SrcStockLocId_Id"]), 
 | 
                                HQtyMust = DBUtility.ClsPub.isDoule(oSub["Qty"]), 
 | 
                                HQty = DBUtility.ClsPub.isDoule(oSub["Qty"]), 
 | 
                                HPrice = DBUtility.ClsPub.isDoule(oSub["Price"]), 
 | 
                                HMoney = DBUtility.ClsPub.isDoule(oSub["Amount"]), 
 | 
                                HTaxPrice = DBUtility.ClsPub.isDoule(oSub["Price"]), 
 | 
                                HTaxRate = 1, 
 | 
                                HTaxMoney = DBUtility.ClsPub.isDoule(oSub["Amount"]), 
 | 
                                HRelationQty = 0, 
 | 
                                HRelationMoney = 0, 
 | 
                                HSourceInterID = 0, 
 | 
                                HSourceEntryID = 0, 
 | 
                                HSourceBillNo = DBUtility.ClsPub.isStrNull(oSub["SrcBillNo"]), 
 | 
                                HSourceBillType = DBUtility.ClsPub.isStrNull(oSub["SrcBillTypeId"]), 
 | 
                                HERPInterID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["Id"]), 
 | 
                                HERPEntryID = DBUtility.ClsPub.isLong(oSub["Id"]), 
 | 
                                HERPBillNo_Sub = "", 
 | 
                                HPOOrderInterID = 0, 
 | 
                                HPOOrderEntryID = 0, 
 | 
                                HPOOrderBillNo = "", 
 | 
                                HSeOrderInterID = 0, 
 | 
                                HSeOrderEntryID = 0, 
 | 
                                HSeOrderBillNo = "", 
 | 
                                HICMOInterID = 0, 
 | 
                                HICMOEntryID = 0, 
 | 
                                HICMOBillNo = "", 
 | 
                                HWWOrderInterID = 0, 
 | 
                                HWWOrderEntryID = 0, 
 | 
                                HWWOrderBillNo = "", 
 | 
                                HProduceDate = DBUtility.ClsPub.isDate(oSub["ProduceDate"]), 
 | 
                                HExpiryDate = DBUtility.ClsPub.isDate(oSub["ExpiryDate"]), 
 | 
                                HOWNERID = DBUtility.ClsPub.isLong(oSub["OwnerId_Id"]), 
 | 
                                HOWNERTYPEID = DBUtility.ClsPub.isStrNull(oSub["OwnerTypeId"]), 
 | 
                                HKEEPERID = DBUtility.ClsPub.isLong(oSub["KeeperId_Id"]), 
 | 
                                HKEEPERTYPEID = DBUtility.ClsPub.isStrNull(oSub["KeeperTypeId"]), 
 | 
                            }; 
 | 
  
 | 
                            //写入子表 
 | 
                            sql = $@"Insert into Kf_ICStockBillSub 
 | 
                                        (HInterID,HEntryID,HMTONo,HPlanMode,HRemark,HExpressNumber 
 | 
                                        ,HMaterID,HUnitID,HBatchNo,HPropertyID,HWHID,HSPID,HSCWHID,HSCSPID 
 | 
                                        ,HQtyMust,HQty,HPrice,HMoney,HTaxPrice,HTaxRate,HTaxMoney,HRelationQty,HRelationMoney 
 | 
                                        ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HERPInterID,HERPEntryID,HERPBillNo_Sub 
 | 
                                        ,HPOOrderInterID,HPOOrderEntryID,HPOOrderBillNo,HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo 
 | 
                                        ,HICMOInterID,HICMOEntryID,HICMOBillNo,HWWOrderInterID,HWWOrderEntryID,HWWOrderBillNo 
 | 
                                        ,HProduceDate 
 | 
                                        ,HExpiryDate 
 | 
                                        ,HOWNERID,HOWNERTYPEID,HKEEPERID,HKEEPERTYPEID) 
 | 
                                        Values ({subData.HInterID},{subData.HEntryID},'{subData.HMTONo}',{subData.HPlanMode},'{subData.HRemark}','{subData.HExpressNumber}' 
 | 
                                        ,{subData.HMaterID},{subData.HUnitID},'{subData.HBatchNo}',{subData.HPropertyID},{subData.HWHID},{subData.HSPID},{subData.HSCWHID},{subData.HSCSPID} 
 | 
                                        ,{subData.HQtyMust},{subData.HQty},{subData.HPrice},{subData.HMoney},{subData.HTaxPrice},{subData.HTaxRate},{subData.HTaxMoney},{subData.HRelationQty},{subData.HRelationMoney} 
 | 
                                        ,{subData.HSourceInterID},{subData.HSourceEntryID},'{subData.HSourceBillNo}','{subData.HSourceBillType}',{subData.HERPInterID},{subData.HERPEntryID},'{subData.HERPBillNo_Sub}' 
 | 
                                        ,{subData.HPOOrderInterID},{subData.HPOOrderEntryID},'{subData.HPOOrderBillNo}',{subData.HSeOrderInterID},{subData.HSeOrderEntryID},'{subData.HSeOrderBillNo}' 
 | 
                                        ,{subData.HICMOInterID},{subData.HICMOEntryID},'{subData.HICMOBillNo}',{subData.HWWOrderInterID},{subData.HWWOrderEntryID},'{subData.HWWOrderBillNo}' 
 | 
                                        ,case when '{subData.HProduceDate}' = '1900/1/1 0:00:00' then NULL else '{subData.HProduceDate}' end 
 | 
                                        ,case when '{subData.HExpiryDate}' = '1900/1/1 0:00:00' then NULL else '{subData.HExpiryDate}' end 
 | 
                                        ,{subData.HOWNERID},'{subData.HOWNERTYPEID}',{subData.HKEEPERID},'{subData.HKEEPERTYPEID}')"; 
 | 
                            oCn.RunProc(sql.Replace("\r\n", "")); 
 | 
                        } 
 | 
  
 | 
                        oCn.Commit(); 
 | 
                        objJsonResult.code = "0"; 
 | 
                        objJsonResult.count = 1; 
 | 
                        objJsonResult.Message = "单据同步成功!"; 
 | 
                        objJsonResult.data = null; 
 | 
                        return objJsonResult; 
 | 
                    } 
 | 
                    else 
 | 
                    { 
 | 
                        objJsonResult.code = "0"; 
 | 
                        objJsonResult.count = 1; 
 | 
                        objJsonResult.Message = "不支持同步功能!"; 
 | 
                        objJsonResult.data = null; 
 | 
                        return objJsonResult; 
 | 
                    } 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    objJsonResult.code = "0"; 
 | 
                    objJsonResult.count = 0; 
 | 
                    objJsonResult.Message = "获取系统参数失败! " + sErrMsg; 
 | 
                    objJsonResult.data = null; 
 | 
                    return objJsonResult; 
 | 
                } 
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                objJsonResult.code = "0"; 
 | 
                objJsonResult.count = 0; 
 | 
                objJsonResult.Message = "单据同步失败!" + e.ToString(); 
 | 
                objJsonResult.data = null; 
 | 
                return objJsonResult; 
 | 
            } 
 | 
        } 
 | 
        #endregion 
 | 
  
 | 
    } 
 | 
} 
 |