/////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//		材机分析汇总变量计算
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
BEGIN:_工程费用小数位数
${
 ?#{
	-> @工程信息.工程费用小数位数 == "整数"
	 :
	0.0;
	-> @工程信息.工程费用小数位数 == "1位小数"
	 :
	1.0;
	-> @工程信息.工程费用小数位数 == "2位小数"
	 :
	2.0;
	}
}

BEGIN:_材机人工价差
${
	sum(source,"人材机",?人材机.市场价不含税 - 人材机.预算价不含税) 
}

BEGIN:_材机人工价差合价
${
	round(?sum(source,"人材机",?(人材机.市场价不含税 - 人材机.预算价不含税) * 人材机.数量 ), _工程费用小数位数)
}

BEGIN:_材机人工市场价合价
${
	round(?sum(source,"人材机",?人材机.市场价不含税 * 人材机.数量 ), _工程费用小数位数)
}

BEGIN:_材机人工预算价合价
${
	round(?sum(source,"人材机",?人材机.预算价不含税 * 人材机.数量 ), _工程费用小数位数)
}

BEGIN:_材机机械价差
${
     sum(source,"人材机",?人材机.市场价不含税 - 人材机.预算价不含税)
}

BEGIN:_材机机械价差合价
${
	round(?sum(source,"人材机",?(人材机.市场价不含税 - 人材机.预算价不含税) * 人材机.数量 ), _工程费用小数位数)
}


BEGIN:_材机机械差值不含税
${
	round(?sum(source,"人材机",?(人材机.结算价不含税 - 人材机.市场价不含税) * 人材机.数量 ), _工程费用小数位数)
}


BEGIN:_材机机械市场价合价
${
	round(?sum(source,"人材机",?人材机.市场价不含税 * 人材机.数量 ), _工程费用小数位数)
}


BEGIN:_材机机械结算价合价
${
	round(?sum(source,"人材机",?人材机.结算价不含税 * 人材机.数量 ), _工程费用小数位数)
}


BEGIN:_材机机械预算价合价
${
	round(?sum(source,"人材机",?人材机.预算价不含税 * 人材机.数量 ), _工程费用小数位数)
}

BEGIN:_材机材料价差含税
${
     sum(source,"人材机",?人材机.市场价含税 - 人材机.预算价含税)
}

BEGIN:_材机材料价差不含税
${
     sum(source,"人材机",?人材机.市场价不含税 - 人材机.预算价不含税)
}


BEGIN:_材机材料价差合价含税
${
	round(?sum(source,"人材机",?(人材机.市场价含税 - 人材机.预算价含税) * 人材机.数量 ), _工程费用小数位数)
}

BEGIN:_材机材料价差合价不含税
${
	round(?sum(source,"人材机",?(人材机.市场价不含税 - 人材机.预算价不含税) * 人材机.数量 ), _工程费用小数位数)
}



BEGIN:_材机材料差值含税
${
	round(?sum(source,"人材机",?(人材机.结算价含税 - 人材机.市场价含税) * 人材机.数量 ), _工程费用小数位数)
}

BEGIN:_材机材料差值不含税
${
	round(?sum(source,"人材机",?(人材机.结算价不含税 - 人材机.市场价不含税) * 人材机.数量 ), _工程费用小数位数)
}



BEGIN:_材机材料市场价合价含税
${
	round(?sum(source,"人材机",?人材机.市场价含税 * 人材机.数量 ), _工程费用小数位数)
}


BEGIN:_材机材料市场价合价不含税
${
	round(?sum(source,"人材机",?人材机.市场价不含税 * 人材机.数量 ), _工程费用小数位数)
}



BEGIN:_材机材料结算价合价含税
${
	round(?sum(source,"人材机",?人材机.结算价含税 * 人材机.数量 ), _工程费用小数位数)
}


BEGIN:_材机材料结算价合价不含税
${
	round(?sum(source,"人材机",?人材机.结算价不含税 * 人材机.数量 ), _工程费用小数位数)
}



BEGIN:_材机材料预算价合价含税
${
	round(?sum(source,"人材机",?人材机.预算价含税 * 人材机.数量 ), _工程费用小数位数)
}

BEGIN:_材机材料预算价合价不含税
${
	round(?sum(source,"人材机",?人材机.预算价不含税 * 人材机.数量 ), _工程费用小数位数)
}

BEGIN:_材机主材价差
${
     sum(source,"人材机",?人材机.市场价不含税 - 人材机.预算价不含税)
}

BEGIN:_材机主材价差合价
${
	round(?sum(source,"人材机",?(人材机.市场价不含税 - 人材机.预算价不含税) * 人材机.数量), _工程费用小数位数)
}

BEGIN:_材机主材市场价合价
${
	round(?sum(source,"人材机",?人材机.市场价不含税 * 人材机.数量), _工程费用小数位数)
}

BEGIN:_材机主材预算价合价
${
	round(?sum(source,"人材机",?人材机.预算价不含税 * 人材机.数量), _工程费用小数位数)
}

BEGIN:_材机设备运杂费
${
     sum(source,"人材机",?人材机.市场价不含税 )
}

BEGIN:_材机设备市场价合价
${
	round(?sum(source,"人材机",?人材机.市场价不含税 * 人材机.数量), _工程费用小数位数)
}

BEGIN:_材机设备运杂费合价
${
	round(?sum(source,"人材机",?人材机.市场价不含税  * 人材机.数量), _工程费用小数位数)
}

BEGIN:_材机配件运杂费
${
     sum(source,"人材机",?人材机.市场价不含税 )
}

BEGIN:_材机配件原价合价
${
	round(?sum(source,"人材机",?人材机.原价 * 人材机.数量  ), _工程费用小数位数)
}

BEGIN:_材机配件市场价合价
${
	round(?sum(source,"人材机",?人材机.市场价不含税 * 人材机.数量  ), _工程费用小数位数)
}

BEGIN:_材机配件价差
${
     sum(source,"人材机",?人材机.市场价不含税 - 人材机.原价)
}

BEGIN:_材机配件价差合价
${
	round(?sum(source,"人材机",?(人材机.市场价不含税 - 人材机.原价) * 人材机.数量  ), _工程费用小数位数)
}

BEGIN:_材机配件运杂费合价
${
	round(?sum(source,"人材机",?人材机.市场价不含税  * 人材机.数量 ), _工程费用小数位数)
}

BEGIN:_材机主材合价含税
${
	round(?sum(source,"人材机",?人材机.市场价含税 * 人材机.数量), _工程费用小数位数)
}

BEGIN:_材机主材合价不含税
${
	round(?sum(source,"人材机",?人材机.市场价不含税 * 人材机.数量), _工程费用小数位数)
}

BEGIN:_材机设备合价含税
${
	round(?sum(source,"人材机",?人材机.市场价含税 * 人材机.数量), _工程费用小数位数)
}

BEGIN:_材机设备合价不含税
${
	round(?sum(source,"人材机",?人材机.市场价不含税 * 人材机.数量), _工程费用小数位数)
}


//***********数量计算***********************************************

BEGIN:_材机主材总重
${
     sum(source,"主材",?主材.单重 * 主材.数量)
}

//-------------------------------------合并材机数量---------------20230128修改通信定额范围以及拆分人工的机械增加------------------------------//
//****2023年11月9日 运输定额的地形区分人运、汽车拖拉机计算*****//

BEGIN:_材机_定额地形系数_人工增加
${
	?#{
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && in(parent.编码,"JYX1-1~16")
		: 
			(@拆除架空线路地形系数.工地运输混凝土杆);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && in(parent.编码,"JYX1-17~22")
		: 
			(@拆除架空线路地形系数.工地运输金具);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && (in(parent.编码,"JYX1-23~108") && strFind(parent.名称,"装卸") == -1)
		: 
			(@拆除架空线路地形系数.工汽拖运输);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && in(parent.编码,"CYX1-1~4")
		: 
			(@拆除架空线路地形系数.基础工程);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && in(parent.编码,"CYX2-1~40")
		: 
			(@拆除架空线路地形系数.杆塔工程);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && in(parent.编码,"CYX3-1~27")
		: 
			(@拆除架空线路地形系数.架线一般);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && in(parent.编码,"CYX3-28~42")
		: 
			(@拆除架空线路地形系数.架线张力);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && in(parent.编码,"CYX4-1~131")
		: 
			(@拆除架空线路地形系数.附件工程);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && in(parent.编码,"JYX1-1~16")
		: 
			(@拆除通信线路地形系数.工地运输混凝土杆);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && in(parent.编码,"JYX1-17~22")
		: 
			(@拆除通信线路地形系数.工地运输金具);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && (in(parent.编码,"JYX1-23~108") && strFind(parent.名称,"装卸") == -1)
		: 
			(@拆除通信线路地形系数.工汽拖运输);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && in(parent.编码,"CYX1-1~4")
		: 
			(@拆除通信线路地形系数.基础工程);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && in(parent.编码,"CYX2-1~40")
		: 
			(@拆除通信线路地形系数.杆塔工程);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && in(parent.编码,"CYX3-1~27")
		: 
			(@拆除通信线路地形系数.架线一般);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && in(parent.编码,"CYX3-28~42")
		: 
			(@拆除通信线路地形系数.架线张力);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && in(parent.编码,"CYX4-1~131")
		: 
			(@拆除通信线路地形系数.附件工程);	
		->parent.parent.专业类型 != "拆除" && parent.parent.专业类型 != "余物清理" && (in(parent.编码,"PZ1-87~129")|| in(parent.编码,"PGZ1-61~88"))
		: 
			(_工程地形综合系数材机() );	
		->parent.parent.专业类型 != "拆除" && parent.parent.专业类型 != "余物清理" && strFind(parent.编码,"BG-PX7") == 0
		: 
			(_工程地形综合系数材机() );
		->parent.parent.专业类型 != "拆除" && parent.parent.专业类型 != "余物清理" && (strFind(parent.编码,"PX") == 0 || strFind(parent.编码,"PXG") == 0) &&(strFind(parent.编码,"PX1") != 0) && in(parent.编码,"PX5-77~86")==0
		:
			(_工程地形综合系数材机());
			
		->parent.专业类型 != "拆除" && parent.专业类型 != "余物清理" &&  in(parent.编码,"PX1-1~6")
		: 
		  (_运输地形综合系数材机_不含城区());
		  
		 
		->parent.专业类型 != "拆除" && parent.专业类型 != "余物清理" && (in(parent.编码,"PX1-7~30") && strFind(parent.名称,"装卸") == -1)
		: 
		  (_运输地形综合系数材机汽车拖拉机());
			
		->parent.专业类型 != "拆除" && parent.专业类型 != "余物清理"  && strFind(parent.编码,"PX1") == 0  &&   in(parent.编码,"PX1-1~30") == 0  &&   strFind(parent.名称,"装卸") == -1
		: 
		  (_运输地形综合系数材机());	
	}
}

BEGIN:_材机_定额地形系数_机械增加
${
	?#{
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && in(parent.编码,"JYX1-1~16")
		: 
			0;
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && in(parent.编码,"JYX1-17~22")
		: 
			0;
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && (in(parent.编码,"JYX1-23~108") && strFind(parent.名称,"装卸") == -1)
		: 
			(@拆除架空线路地形系数.工汽拖运输);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && in(parent.编码,"CYX1-1~4")
		: 
			(@拆除架空线路地形系数.基础工程);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && in(parent.编码,"CYX2-1~40")
		: 
			(@拆除架空线路地形系数.杆塔工程);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && in(parent.编码,"CYX3-1~27")
		: 
			(@拆除架空线路地形系数.架线一般);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && in(parent.编码,"CYX3-28~42")
		: 
			(@拆除架空线路地形系数.架线张力);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "架空线路"  && in(parent.编码,"CYX4-1~131")
		: 
			(@拆除架空线路地形系数.附件工程);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && in(parent.编码,"JYX1-1~16")
		: 
			0;
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && in(parent.编码,"JYX1-17~22")
		: 
			0;
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && (in(parent.编码,"JYX1-23~108") && strFind(parent.名称,"装卸") == -1)
		: 
			(@拆除通信线路地形系数.工汽拖运输);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && in(parent.编码,"CYX1-1~4")
		: 
			(@拆除通信线路地形系数.基础工程);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && in(parent.编码,"CYX2-1~40")
		: 
			(@拆除通信线路地形系数.杆塔工程);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && in(parent.编码,"CYX3-1~27")
		: 
			(@拆除通信线路地形系数.架线一般);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && in(parent.编码,"CYX3-28~42")
		: 
			(@拆除通信线路地形系数.架线张力);
		->parent.parent.专业类型 == "拆除"  && parent.专业属性 == "通信线路"  && in(parent.编码,"CYX4-1~131")
		: 
			(@拆除通信线路地形系数.附件工程);	
		->parent.parent.专业类型 != "拆除" && parent.parent.专业类型 != "余物清理" && (in(parent.编码,"PZ1-87~129")|| in(parent.编码,"PGZ1-61~88"))
		: 
			(_工程地形综合系数材机() );	
		->parent.parent.专业类型 != "拆除" && parent.parent.专业类型 != "余物清理" && strFind(parent.编码,"BG-PX7") == 0
		: 
			(_工程地形综合系数材机() );
		->parent.parent.专业类型 != "拆除" && parent.parent.专业类型 != "余物清理" && (strFind(parent.编码,"PX") == 0 || strFind(parent.编码,"PXG") == 0) &&(strFind(parent.编码,"PX1") != 0) && in(parent.编码,"PX5-77~86")==0
		:
			iif(in(parent.编码,"PX2-8~18,PX2-23~27,PX2-38~45,PX2-51~59,PX2-65~72"), 0, (_工程地形综合系数材机()));

		->parent.专业类型 != "拆除" && parent.专业类型 != "余物清理" &&  in(parent.编码,"PX1-1~6")
		: 
		  0;
		  
		->parent.专业类型 != "拆除" && parent.专业类型 != "余物清理" && (in(parent.编码,"PX1-7~30") && strFind(parent.名称,"装卸") == -1)
		: 
		  (_运输地形综合系数材机汽车拖拉机());
			
		->parent.专业类型 != "拆除" && parent.专业类型 != "余物清理"  && strFind(parent.编码,"PX1") == 0  &&   in(parent.编码,"PX1-1~30") == 0  &&   strFind(parent.名称,"装卸") == -1
		: 
		  (_运输地形综合系数材机());
	}
}

//****20230119，电缆线路改为通信线路**//

BEGIN:_工程地形综合系数材机
${
	?#{
		->parent.专业属性 == "架空线路"
		:@工程地形系数.架空线路;
	
		->parent.专业属性 == "通信线路"
		:@工程地形系数.通信线路;
		
		->parent.专业属性 == "10kV架空线路"
		:@工程地形系数.10kV架空线路;

		->parent.专业属性 == "400V及以下架空线路"
		:@工程地形系数.400V及以下架空线路;
	}		
}

//****20231109，新增人力运输、汽车拖拉机运输地形**//
BEGIN:_运输地形综合系数材机
${
	?#{
		->parent.专业属性 == "架空线路"
		:@运输地形系数.架空线路;
		
		->parent.专业属性 == "通信线路"
		:@运输地形系数.通信线路;
		
		->parent.专业属性 == "10kV架空线路"
		:@运输地形系数.10kV架空线路;
		
		->parent.专业属性 == "400V及以下架空线路"
		:@运输地形系数.400V及以下架空线路;		
	}		
}

//****20230120，新增不含城区地形系数**//

BEGIN:_运输地形综合系数材机_不含城区
${
  ?#{
    ->parent.专业属性 == "架空线路"
    :@运输地形系数.架空线路_其中：人力运输.不含城区;
    ->parent.专业属性 == "通信线路"
    :@运输地形系数.通信线路_其中：人力运输.不含城区;
    ->parent.专业属性 == "10kV架空线路"
    :@运输地形系数.10kV架空线路_其中：人力运输.不含城区;
    ->parent.专业属性 == "400V及以下架空线路"
    :@运输地形系数.400V及以下架空线路_其中：人力运输.不含城区;
  }    
}

//****20231109，新增以下变量，为了区分出汽车拖拉机运输地形的取值**//
BEGIN:_运输地形综合系数材机汽车拖拉机
${
	?#{
		->parent.专业属性 == "架空线路"
		:@运输地形系数.架空线路_其中：汽车拖拉机运输;
		
		->parent.专业属性 == "通信线路"
		:@运输地形系数.通信线路_其中：汽车拖拉机运输;
		
		->parent.专业属性 == "10kV架空线路"
		:@运输地形系数.10kV架空线路_其中：汽车拖拉机运输;
		
		->parent.专业属性 == "400V及以下架空线路"
		:@运输地形系数.400V及以下架空线路_其中：汽车拖拉机运输;
	}		
}




BEGIN:_材机合并机械数量
${
	sum(source, "机械",?#{
	->机械.type == "主材"
	:
		机械.数量 * _项目划分费率();
	-> parent.type == "项目划分"
	 :
	机械.数量;
	-> parent.type != "项目划分"
	 :
	parent.数量 * _项目划分费率() * 机械.数量 * parent.机械系数 *  parent.定额系数 * ( 1 + _材机_定额地形系数_机械增加() / 100);  
	})
}


BEGIN:_材机合并人工数量
${
	sum(source, "人工",?#{
	->人工.type == "主材"
	:
		人工.数量 * _项目划分费率();
	-> parent.type == "项目划分"
	 :
	人工.数量;
	-> parent.type != "项目划分"
	 :
	parent.数量 * _项目划分费率() * 人工.数量 * parent.人工系数 *  parent.定额系数 * ( 1 + _材机_定额地形系数_人工增加() / 100);
	})
}


BEGIN:_材机合并主材数量
${
	sum(source, "主材",?主材.数量)
}

BEGIN:_材机合并设备数量
${
	sum(source, "设备",?设备.数量)
}

BEGIN:_材机合并材料数量
${
	sum(source, "材料",?#{
	-> parent.type == "项目划分"
	 :
		材料.数量;
	//普通材料
	->parent.type == "定额"
	:
		parent.数量 * _项目划分费率() * 材料.数量 * parent.材料系数 *  parent.定额系数;
	//配合比材料
	-> parent.type == "材料"
	 :
		parent.数量 * parent.parent.数量 * _项目划分费率() * 材料.数量 * parent.parent.材料系数 *  parent.parent.定额系数;
	})
}

BEGIN:_材机合并定额数量
${
	sum(source, "定额",?定额.数量)
}
