From 65283fef2c9e0e662e6dc2ae64f8ad51c97e996f Mon Sep 17 00:00:00 2001 From: yangle <admin@YINMOU> Date: 星期五, 19 七月 2024 13:29:29 +0800 Subject: [PATCH] 1 --- WebAPI/Controllers/CGGL/Cg_POOrderBillController.cs | 262 ++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 202 insertions(+), 60 deletions(-) diff --git a/WebAPI/Controllers/CGGL/Cg_POOrderBillController.cs b/WebAPI/Controllers/CGGL/Cg_POOrderBillController.cs index ab7d50d..55612c9 100644 --- a/WebAPI/Controllers/CGGL/Cg_POOrderBillController.cs +++ b/WebAPI/Controllers/CGGL/Cg_POOrderBillController.cs @@ -50,9 +50,9 @@ //} //string sql = "select * from h_v_IF_POOrderBillList where 1 = 1 "; - //if (sWhere=="" || sWhere == null) + //if (sWhere == "" || sWhere == null) //{ - // ds = oCN.RunProcReturn(sql+ " order by hmainid desc", "h_v_IF_POOrderBillList"); + // ds = oCN.RunProcReturn("select * from h_v_IF_POOrderBillList order by hmainid desc", "h_v_IF_POOrderBillList"); //} //else //{ @@ -776,6 +776,17 @@ long HCORRESPONDORGID = mainList2[0].HCORRESPONDORGID == null ? 0 : mainList2[0].HCORRESPONDORGID; //瀵瑰簲缁勭粐 long HPROVIDERCONTACTID = mainList2[0].HPROVIDERCONTACTID == null ? 0 : mainList2[0].HPROVIDERCONTACTID;//渚涜揣鏂硅仈绯讳汉 + //杩涜 浼氳鏈熼棿 缁撹处 鐨勫垽鏂拰鎺у埗 + string s = ""; + int sYear = 0; + int sPeriod = 0; + if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(HDate, ref sYear, ref sPeriod, ref s) == false) + { + objJsonResult.Message = s; + return objJsonResult; + } + + ds = oCN.RunProcReturn("select * from h_v_IF_POOrderBillList where hmainid=" + HInterID + " and 鍗曟嵁鍙�='" + HBillNo + "'", "h_v_IF_POOrderBillList"); if ((OperationType == 1 || OperationType == 2) && ds.Tables[0].Rows.Count == 0)//鏂板 @@ -891,65 +902,62 @@ List<ClsCg_POOrderBillSub> DetailColl2 = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsCg_POOrderBillSub>>(msg3); - - string HSourceBillNo = DetailColl2[0].HSourceBillNo == null ? "''" : DetailColl2[0].HSourceBillNo; - string HSourceBillType = DetailColl2[0].HSourceBillType == null ? "''" : DetailColl2[0].HSourceBillType; - double HRelationQty = DetailColl2[0].HRelationQty == null ? 0 : DetailColl2[0].HRelationQty; - double HBackRelationQty = DetailColl2[0].HBackRelationQty == null ? 0 : DetailColl2[0].HBackRelationQty; - long HPropertyID = DetailColl2[0].HPropertyID == null ? 0 : DetailColl2[0].HPropertyID; - string HBatChNo = DetailColl2[0].HBatChNo == null ? "''" : DetailColl2[0].HBatChNo; - long HAuxPropID = DetailColl2[0].HAuxPropID == null ? 0 : DetailColl2[0].HAuxPropID; - string HMTONo = DetailColl2[0].HMTONo == null ? "''" : DetailColl2[0].HMTONo; - long HERPInterID = DetailColl2[0].HERPInterID == null ? 0 : DetailColl2[0].HERPInterID; - long HERPEntryID = DetailColl2[0].HERPEntryID == null ? 0 : DetailColl2[0].HERPEntryID; - long HWHID = DetailColl2[0].HWHID == null ? 0 : DetailColl2[0].HWHID; - - string HSeOrderBillNo = DetailColl2[0].HSeOrderBillNo == null ? "''" : DetailColl2[0].HSeOrderBillNo; - string HRemark = DetailColl2[0].HRemark == null ? "''" : DetailColl2[0].HRemark; - string HSourceInterID = DetailColl2[0].HSourceInterID == null ? "''" : DetailColl2[0].HSourceInterID; - string HSourceEntryID = DetailColl2[0].HSourceEntryID == null ? "''" : DetailColl2[0].HSourceEntryID; - - long HSEQ = DetailColl2[0].HSEQ == null ? 0 : DetailColl2[0].HSEQ;//琛屽彿 - long HSTOCKORGID = DetailColl2[0].HSTOCKORGID == null ? 0 : DetailColl2[0].HSTOCKORGID;//鏀舵枡缁勭粐 - long HRECEIVEDEPTID = DetailColl2[0].HRECEIVEDEPTID == null ? 0 : DetailColl2[0].HRECEIVEDEPTID;//鏀舵枡閮ㄩ棬 - string HSUPPLIERLOT = DetailColl2[0].HSUPPLIERLOT == null ? "''" : DetailColl2[0].HSUPPLIERLOT;//渚涘簲鍟嗘壒鍙� - long HBOMID = DetailColl2[0].HBOMID == null ? 0 : DetailColl2[0].HBOMID;//BOM鐗堟湰 - long HSTOCKUNITID = DetailColl2[0].HSTOCKUNITID == null ? 0 : DetailColl2[0].HSTOCKUNITID;//搴撳瓨鍗曚綅 - long HBASEUNITID = DetailColl2[0].HBASEUNITID == null ? 0 : DetailColl2[0].HBASEUNITID;//鍩烘湰鍗曚綅 - string HBFLOWID = DetailColl2[0].HBFLOWID == null ? "''" : DetailColl2[0].HBFLOWID; //涓氬姟娴佺▼ - long HGIVEAWAY = DetailColl2[0].HGIVEAWAY == null ? 0 : DetailColl2[0].HGIVEAWAY; //鏄惁璧犲搧 - string HROWTYPE = DetailColl2[0].HROWTYPE == null ? "''" : DetailColl2[0].HROWTYPE;//浜у搧绫诲瀷 - double HBASEUNITQTY = DetailColl2[0].HBASEUNITQTY == null ? 0 : DetailColl2[0].HBASEUNITQTY;//鍩烘湰鍗曚綅鏁伴噺 - double HSTOCKBASEQTY = DetailColl2[0].HSTOCKBASEQTY == null ? 0 : DetailColl2[0].HSTOCKBASEQTY; //搴撳瓨鍩烘湰鏁伴噺 - string HREQTRACENO = DetailColl2[0].HREQTRACENO == null ? "''" : DetailColl2[0].HREQTRACENO;//闇�姹傝窡韪彿 - double HTAXNETPRICE = DetailColl2[0].HTAXNETPRICE == null ? 0 : DetailColl2[0].HTAXNETPRICE; //鍚◣鍑�浠� - double HPRICECOEFFICIENT = DetailColl2[0].HPRICECOEFFICIENT == null ? 0 : DetailColl2[0].HPRICECOEFFICIENT;//浠锋牸绯绘暟 - long HTAXCOMBINATION = DetailColl2[0].HTAXCOMBINATION == null ? 0 : DetailColl2[0].HTAXCOMBINATION;//绋庣粍鍚� - long HPRICEUNITID = DetailColl2[0].HPRICEUNITID == null ? 0 : DetailColl2[0].HPRICEUNITID;//璁′环鍗曚綅 - long HPRICELISTENTRY = DetailColl2[0].HPRICELISTENTRY == null ? 0 : DetailColl2[0].HPRICELISTENTRY;//鍒嗗綍浠风洰琛� - long HPAYORGID = DetailColl2[0].HPAYORGID == null ? 0 : DetailColl2[0].HPAYORGID;//浠樻缁勭粐 - long HSETTLEMODEID = DetailColl2[0].HSETTLEMODEID == null ? 0 : DetailColl2[0].HSETTLEMODEID;//缁撶畻鏂瑰紡 - long HSETTLECURRID = DetailColl2[0].HSETTLECURRID == null ? 0 : DetailColl2[0].HSETTLECURRID;//缁撶畻甯佸埆 - long HEXCHANGETYPEID = DetailColl2[0].HEXCHANGETYPEID == null ? 0 : DetailColl2[0].HEXCHANGETYPEID;//姹囩巼绫诲瀷 - long HPAYCONDITIONID = DetailColl2[0].HPAYCONDITIONID == null ? 0 : DetailColl2[0].HPAYCONDITIONID;//浠樻鏉′欢 - double HEXCHANGERATE = DetailColl2[0].HEXCHANGERATE == null ? 0 : DetailColl2[0].HEXCHANGERATE;//姹囩巼 - long HLOCALCURRID = DetailColl2[0].HLOCALCURRID == null ? 0 : DetailColl2[0].HLOCALCURRID;//鏈綅甯� - long HISINCLUDEDTAX = DetailColl2[0].HISINCLUDEDTAX == null ? 0 : DetailColl2[0].HISINCLUDEDTAX;//鏄惁鍚◣ - long HISPRICEEXCLUDETAX = DetailColl2[0].HISPRICEEXCLUDETAX == null ? 0 : DetailColl2[0].HISPRICEEXCLUDETAX;//浠峰绋� - long HTAXRATEID = DetailColl2[0].HTAXRATEID == null ? 0 : DetailColl2[0].HTAXRATEID;//绋庣巼鍚嶇О - double HCOSTPERCENT = DetailColl2[0].HCOSTPERCENT == null ? 0 : DetailColl2[0].HCOSTPERCENT;//璁″叆鎴愭湰姣斾緥% - double HCOSTAMOUNT = DetailColl2[0].HCOSTAMOUNT == null ? 0 : DetailColl2[0].HCOSTAMOUNT;//璁″叆鎴愭湰閲戦 - long HVAT = DetailColl2[0].HVAT == null ? 0 : DetailColl2[0].HVAT;//澧炲�肩◣ - long HSELLERWITHHOLDING = DetailColl2[0].HSELLERWITHHOLDING == null ? 0 : DetailColl2[0].HSELLERWITHHOLDING;//鍗栨柟浠f墸浠g即 - long HBUYERWITHHOLDING = DetailColl2[0].HBUYERWITHHOLDING == null ? 0 : DetailColl2[0].HBUYERWITHHOLDING;//涔版柟浠f墸浠g即 - string HMATERIALDESC = DetailColl2[0].HMATERIALDESC == null ? "''" : DetailColl2[0].HMATERIALDESC; //鐗╂枡璇存槑 - - int i = 0; foreach (ClsCg_POOrderBillSub oSub in DetailColl) { + string HSourceBillNo = DetailColl2[i].HSourceBillNo == null ? "''" : DetailColl2[i].HSourceBillNo; + string HSourceBillType = DetailColl2[i].HSourceBillType == null ? "''" : DetailColl2[i].HSourceBillType; + double HRelationQty = DetailColl2[i].HRelationQty; + double HBackRelationQty = DetailColl2[i].HBackRelationQty; + long HPropertyID = DetailColl2[i].HPropertyID; + string HBatChNo = DetailColl2[i].HBatChNo == null ? "''" : DetailColl2[i].HBatChNo; + long HAuxPropID = DetailColl2[i].HAuxPropID; + string HMTONo = DetailColl2[i].HMTONo == null ? "''" : DetailColl2[i].HMTONo; + long HERPInterID = DetailColl2[i].HERPInterID; + long HERPEntryID = DetailColl2[i].HERPEntryID; + long HWHID = DetailColl2[i].HWHID; + + string HSeOrderBillNo = DetailColl2[i].HSeOrderBillNo == null ? "''" : DetailColl2[i].HSeOrderBillNo; + string HRemark = DetailColl2[i].HRemark == null ? "''" : DetailColl2[i].HRemark; + string HSourceInterID = DetailColl2[i].HSourceInterID == null ? "''" : DetailColl2[i].HSourceInterID; + string HSourceEntryID = DetailColl2[i].HSourceEntryID == null ? "''" : DetailColl2[i].HSourceEntryID; + + long HSEQ = DetailColl2[i].HSEQ;//琛屽彿 + long HSTOCKORGID = DetailColl2[i].HSTOCKORGID;//鏀舵枡缁勭粐 + long HRECEIVEDEPTID = DetailColl2[i].HRECEIVEDEPTID;//鏀舵枡閮ㄩ棬 + string HSUPPLIERLOT = DetailColl2[i].HSUPPLIERLOT;//渚涘簲鍟嗘壒鍙� + long HBOMID = DetailColl2[i].HBOMID;//BOM鐗堟湰 + long HSTOCKUNITID = DetailColl2[i].HSTOCKUNITID;//搴撳瓨鍗曚綅 + long HBASEUNITID = DetailColl2[i].HBASEUNITID;//鍩烘湰鍗曚綅 + string HBFLOWID = DetailColl2[i].HBFLOWID == null ? "''" : DetailColl2[i].HBFLOWID; //涓氬姟娴佺▼ + long HGIVEAWAY = DetailColl2[i].HGIVEAWAY; //鏄惁璧犲搧 + string HROWTYPE = DetailColl2[i].HROWTYPE == null ? "''" : DetailColl2[i].HROWTYPE;//浜у搧绫诲瀷 + double HBASEUNITQTY = DetailColl2[i].HBASEUNITQTY;//鍩烘湰鍗曚綅鏁伴噺 + double HSTOCKBASEQTY = DetailColl2[i].HSTOCKBASEQTY; //搴撳瓨鍩烘湰鏁伴噺 + string HREQTRACENO = DetailColl2[i].HREQTRACENO == null ? "''" : DetailColl2[i].HREQTRACENO;//闇�姹傝窡韪彿 + double HTAXNETPRICE = DetailColl2[i].HTAXNETPRICE; //鍚◣鍑�浠� + double HPRICECOEFFICIENT = DetailColl2[i].HPRICECOEFFICIENT;//浠锋牸绯绘暟 + long HTAXCOMBINATION = DetailColl2[i].HTAXCOMBINATION;//绋庣粍鍚� + long HPRICEUNITID = DetailColl2[i].HPRICEUNITID;//璁′环鍗曚綅 + long HPRICELISTENTRY = DetailColl2[i].HPRICELISTENTRY;//鍒嗗綍浠风洰琛� + long HPAYORGID = DetailColl2[i].HPAYORGID;//浠樻缁勭粐 + long HSETTLEMODEID = DetailColl2[i].HSETTLEMODEID;//缁撶畻鏂瑰紡 + long HSETTLECURRID = DetailColl2[i].HSETTLECURRID;//缁撶畻甯佸埆 + long HEXCHANGETYPEID = DetailColl2[i].HEXCHANGETYPEID;//姹囩巼绫诲瀷 + long HPAYCONDITIONID = DetailColl2[i].HPAYCONDITIONID;//浠樻鏉′欢 + double HEXCHANGERATE = DetailColl2[i].HEXCHANGERATE;//姹囩巼 + long HLOCALCURRID = DetailColl2[i].HLOCALCURRID;//鏈綅甯� + long HISINCLUDEDTAX = DetailColl2[i].HISINCLUDEDTAX;//鏄惁鍚◣ + long HISPRICEEXCLUDETAX = DetailColl2[i].HISPRICEEXCLUDETAX;//浠峰绋� + long HTAXRATEID = DetailColl2[i].HTAXRATEID;//绋庣巼鍚嶇О + double HCOSTPERCENT = DetailColl2[i].HCOSTPERCENT;//璁″叆鎴愭湰姣斾緥% + double HCOSTAMOUNT = DetailColl2[i].HCOSTAMOUNT;//璁″叆鎴愭湰閲戦 + long HVAT = DetailColl2[i].HVAT;//澧炲�肩◣ + long HSELLERWITHHOLDING = DetailColl2[i].HSELLERWITHHOLDING;//鍗栨柟浠f墸浠g即 + long HBUYERWITHHOLDING = DetailColl2[i].HBUYERWITHHOLDING;//涔版柟浠f墸浠g即 + string HMATERIALDESC = DetailColl2[i].HMATERIALDESC == null ? "''" : DetailColl2[i].HMATERIALDESC; //鐗╂枡璇存槑 i++; - if (oSub.HQty <= 0 || oSub.HQty == null) + if (oSub.HQty <= 0 || oSub.HQty == 0) { objJsonResult.code = "0"; objJsonResult.count = 0; @@ -1118,6 +1126,7 @@ } } #endregion + /// <summary> ///鍒犻櫎鍔熻兘 /// </summary> @@ -1128,7 +1137,7 @@ { try { - + string HBillNo = ""; //鍒犻櫎鍓嶆帶鍒�========================================= string sql1 = "exec h_p_Cg_POOrderBill_BeforeDelCtrl " + HInterID + ",'" + HBillNo + "','" + user + "'"; @@ -1152,8 +1161,19 @@ } //================================================================================== + //杩涜 浼氳鏈熼棿 缁撹处 鐨勫垽鏂拰鎺у埗 + string s = ""; + int sYear = 0; + int sPeriod = 0; + DateTime HDate = DateTime.Now; + if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(HDate, ref sYear, ref sPeriod, ref s) == false) + { + objJsonResult.Message = s; + return objJsonResult; + } + string sReturn = ""; - oCN.BeginTran(); + oCN.BeginTran(); oCN.RunProc("Delete From Cg_POOrderBillMain where HInterID = " + HInterID); oCN.RunProc("Delete From Cg_POOrderBillSub where HInterID = " + HInterID); oCN.Commit(); @@ -1211,7 +1231,7 @@ { try { - + ds = oCN.RunProcReturn("select * from h_v_IF_POOrderBillList where hmainid =" + HInterID, "h_v_IF_POOrderBillList"); if (ds == null || ds.Tables[0].Rows.Count == 0) { @@ -1380,6 +1400,17 @@ } //================================================================================== + //杩涜 浼氳鏈熼棿 缁撹处 鐨勫垽鏂拰鎺у埗 + string s = ""; + int sYear = 0; + int sPeriod = 0; + DateTime HDate = DateTime.Now; + if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(HDate, ref sYear, ref sPeriod, ref s) == false) + { + objJsonResult.Message = s; + return objJsonResult; + } + //瀹℃牳鎻愪氦 if (oBill.CheckBill(oBill.omodel.HInterID, oBill.omodel.HBillNo, "h_p_Cg_POOrderBill_AfterCheckCtrl", CurUserName, ref DBUtility.ClsPub.sExeReturnInfo) == true) { @@ -1419,6 +1450,18 @@ return objJsonResult; } //========================================================= + + + //杩涜 浼氳鏈熼棿 缁撹处 鐨勫垽鏂拰鎺у埗 + string s = ""; + int sYear = 0; + int sPeriod = 0; + DateTime HDate = DateTime.Now; + if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(HDate, ref sYear, ref sPeriod, ref s) == false) + { + objJsonResult.Message = s; + return objJsonResult; + } //鍙嶅鏍告彁浜bandonCheck if (oBill.AbandonCheck(oBill.omodel.HInterID, oBill.omodel.HBillNo, "h_p_Cg_POOrderBill_AfterUnCheckCtrl", CurUserName, ref DBUtility.ClsPub.sExeReturnInfo) == true) @@ -2256,6 +2299,105 @@ } #endregion + #region 閲囪喘璁㈠崟闇�瑕佹垜瀹℃壒娴佸鎵圭殑 + [Route("Cg_POOrderBill/NeedChecklist")] + [HttpGet] + public object NeedChecklist(string user) + { + try + { + List<object> columnNameList = new List<object>(); + //鍒ゆ柇鏄惁鏈夋煡璇㈡潈闄� + + if (!DBUtility.ClsPub.Security_Log("Cg_POOrderBillQuery", 1, false, user)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鏃犳潈闄愭煡鐪�!"; + objJsonResult.data = null; + return objJsonResult; + } + //鎼滅储闇�瑕佸鏍哥殑 + string sql = " select a.*,c.HItemID as HCheckFlowStatusID,m.HName as 瀹℃壒娴佸悕绉�,c.HCheckFlowID,m.HName as 瀹℃壒椤圭洰鍚嶇О,c.HCheckItemID,c.HChecker as 瀹℃壒娴佸鏍镐汉,c.HCheckNote as 瀹℃壒娴佸鏍稿缓璁�,c.HCheckDate 瀹℃壒娴佸鏍告棩鏈� from h_v_Cg_POOrderBillList AS a LEFT JOIN Xt_BillCheckFlowStatus AS c ON a.hmainid = c.HBillInterID and a.鍗曟嵁绫诲瀷 = c.HBillTypeID" + + " LEFT JOIN Xt_CheckFlowMain as m ON m.HInterID = c.HCheckFlowID" + + " LEFT JOIN Xt_CheckItem as i ON i.HItemID = c.HCheckItemID" + + " where c.HCheckDate is NUll and c.HChecker = '" + user + "'"; + ds = oCN.RunProcReturn(sql, "h_v_Cg_POOrderBillList"); + foreach (DataColumn col in ds.Tables[0].Columns) + { + Type dataType = col.DataType; + string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}"; + columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//鑾峰彇鍒癉ataColumn鍒楀璞$殑鍒楀悕 + } + + objJsonResult.code = "1"; + objJsonResult.count = 1; + objJsonResult.Message = "Sucess锛�"; + objJsonResult.data = ds.Tables[0]; + objJsonResult.list = columnNameList; + return objJsonResult; + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "Exception锛�" + e.ToString(); + objJsonResult.data = null; + return objJsonResult; + } + } + + #endregion + + #region 閲囪喘璁㈠崟宸茬粡瀹℃壒娴佸鎵圭殑 + [Route("Cg_POOrderBill/Checkedlist")] + [HttpGet] + public object Checkedlist(string user) + { + try + { + List<object> columnNameList = new List<object>(); + //鍒ゆ柇鏄惁鏈夋煡璇㈡潈闄� + + if (!DBUtility.ClsPub.Security_Log("Cg_POOrderBillQuery", 1, false, user)) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鏃犳潈闄愭煡鐪�!"; + objJsonResult.data = null; + return objJsonResult; + } + //鎼滅储闇�瑕佸鏍哥殑 + string sql = " select a.*,c.HItemID as HCheckFlowStatusID,m.HName as 瀹℃壒娴佸悕绉�,c.HCheckFlowID,m.HName as 瀹℃壒椤圭洰鍚嶇О,c.HCheckItemID,c.HChecker as 瀹℃壒娴佸鏍镐汉,c.HCheckNote as 瀹℃壒娴佸鏍稿缓璁�,c.HCheckDate 瀹℃壒娴佸鏍告棩鏈� from h_v_Cg_POOrderBillList AS a LEFT JOIN Xt_BillCheckFlowStatus AS c ON a.hmainid = c.HBillInterID and a.鍗曟嵁绫诲瀷 = c.HBillTypeID" + + " LEFT JOIN Xt_CheckFlowMain as m ON m.HInterID = c.HCheckFlowID" + + " LEFT JOIN Xt_CheckItem as i ON i.HItemID = c.HCheckItemID" + + " where c.HCheckDate is not NUll and c.HChecker = '" + user + "'"; + ds = oCN.RunProcReturn(sql, "h_v_Cg_POOrderBillList"); + foreach (DataColumn col in ds.Tables[0].Columns) + { + Type dataType = col.DataType; + string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}"; + columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//鑾峰彇鍒癉ataColumn鍒楀璞$殑鍒楀悕 + } + + objJsonResult.code = "1"; + objJsonResult.count = 1; + objJsonResult.Message = "Sucess锛�"; + objJsonResult.data = ds.Tables[0]; + objJsonResult.list = columnNameList; + return objJsonResult; + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "Exception锛�" + e.ToString(); + objJsonResult.data = null; + return objJsonResult; + } + } + + #endregion } } \ No newline at end of file -- Gitblit v1.9.1