///////////////////////////////////////////////////////////////
//
//  工程量界面重算变量
//
///////////////////////////////////////////////////////////////
BEGIN:人工费_定额重算
${
    sum(_过滤定额_定额重算(),"定额",?round(sum(_过滤人工_定额重算(),"人工",?人工.数量*人工.预算价不含税),2))
}

BEGIN:人工工日_定额重算
${
    sum(_过滤定额_定额重算(),"定额",?sum(_过滤人工工日_定额重算(),"人工",?人工.数量))
}
//*************************材料费重算**************************
BEGIN:材料费_定额重算
${
    round(_普通材料费_定额重算() + _百分比材料费_定额重算() + _元材料费_定额重算(),2)
}

BEGIN:_普通材料费_定额重算
${
	sum(_过滤定额_定额重算(),"工程量",?sum(_过滤材料_定额重算(),"材料",
			?#{
					->材料.拆分 == 0 
					:
					材料.数量*材料.预算价不含税;
					->材料.拆分 == 1 
					:
					材料.数量 * round(sum(items,"拆分子项",?(拆分子项.数量 * 拆分子项.预算价不含税)),2);
			}
		)
	)
}

BEGIN:_百分比材料费_定额重算
${
	sum(_过滤定额_定额重算(),"工程量",?sum(_过滤百分比材料_定额重算(),"材料",
			?{
				材料.数量*round(_普通材料费_定额重算(),3) / 100;
			}
		)
	)
}

BEGIN:_元材料费_定额重算
${
	sum(_过滤定额_定额重算(),"工程量",?sum(_过滤元材料_定额重算(),"材料",
			?{
				材料.数量*材料.预算价不含税;
			}
		)
	)
}

//*************************机械费重算**************************
BEGIN:机械费_定额重算
${
    round(_普通机械费_定额重算() + _百分比机械费_定额重算() + _元机械费_定额重算(),2)
}

BEGIN:_普通机械费_定额重算
${
    sum(_过滤定额_定额重算(),"工程量",?sum(_过滤机械_定额重算(),"机械",
			?{
				机械.数量*机械.预算价不含税;
			}
		)
	)
}

BEGIN:_百分比机械费_定额重算
${
	sum(_过滤定额_定额重算(),"工程量",?sum(_过滤百分比机械_定额重算(),"机械",
			?{
				机械.数量*round(_普通机械费_定额重算(),3) / 100;
			}
		)
	)
}

BEGIN:_元机械费_定额重算
${
	sum(_过滤定额_定额重算(),"工程量",?sum(_过滤元机械_定额重算(),"机械",
			?{
				机械.数量*机械.预算价不含税;
			}
		)
	)
}

//*************************甲供材料费不含税重算**************************
BEGIN:甲供材料费不含税_定额重算
${
   round(_甲供普通材料费不含税_定额重算() + _甲供百分比材料费不含税_定额重算() + _甲供元材料费不含税_定额重算(),2)
}

BEGIN:_甲供普通材料费不含税_定额重算
${
	sum(_过滤定额_定额重算(),"工程量",?sum(_过滤材料_定额重算(),"材料",
			?#{
					->材料.拆分 == 0  && 材料.供货方 == "甲供" 
					:
					材料.数量*材料.预算价不含税;
					->材料.拆分 == 1 
					:
					材料.数量 * round(sum(items,"拆分子项",
						?#{
							->拆分子项.供货方 == "甲供"
							:
							拆分子项.数量 * 拆分子项.预算价不含税;
						}
					),2);
				}
		)
	)
}

BEGIN:_甲供百分比材料费不含税_定额重算
${
	sum(_过滤定额_定额重算(),"工程量",?sum(_过滤百分比材料_定额重算(),"材料",
			?#{
				->材料.供货方 == "甲供"
				:
				材料.数量*round(_普通材料费_定额重算(),3)/100;
			}
		)
	)
}

BEGIN:_甲供元材料费不含税_定额重算
${
	sum(_过滤定额_定额重算(),"工程量",?sum(_过滤元材料_定额重算(),"材料",
			?#{
				->材料.供货方 == "甲供"
				:
				材料.数量*材料.预算价不含税;
			}
		)
	)
}

//*************************甲供材料费含税重算**************************
BEGIN:甲供材料费含税_定额重算
${
   round(_甲供普通材料费含税_定额重算() + _甲供百分比材料费含税_定额重算() + _甲供元材料费含税_定额重算(),2)
}

BEGIN:_甲供普通材料费含税_定额重算
${
	sum(_过滤定额_定额重算(),"工程量",?sum(_过滤材料_定额重算(),"材料",
			?#{
					->材料.拆分 == 0  && 材料.供货方 == "甲供" 
					:
					材料.数量*材料.预算价含税;
					->材料.拆分 == 1 
					:
					材料.数量 * round(sum(items,"拆分子项",
						?#{
							->拆分子项.供货方 == "甲供"
							:
							拆分子项.数量 * 拆分子项.预算价含税;
						}
					),2);
				}
		)
	)
}

BEGIN:_普通材料费含税_定额重算
${
    sum(_过滤定额_定额重算(),"工程量",?sum(_过滤材料_定额重算(),"材料",
			?#{
					->材料.拆分 == 0 
					:
					材料.数量*材料.预算价含税;
					->材料.拆分 == 1 
					:
					材料.数量 * round(sum(items,"拆分子项",?(拆分子项.数量 * 拆分子项.预算价含税)),2);
				}
		)
	)
}

BEGIN:_甲供百分比材料费含税_定额重算
${
	sum(_过滤定额_定额重算(),"工程量",?sum(_过滤百分比材料_定额重算(),"材料",
			?#{
				->材料.供货方 == "甲供"
				:
				材料.数量*round(_普通材料费含税_定额重算(),3)/100;
			}
		)
	)
}

BEGIN:_甲供元材料费含税_定额重算
${
	sum(_过滤定额_定额重算(),"工程量",?sum(_过滤元材料_定额重算(),"材料",
			?#{
				->材料.供货方 == "甲供"
				:
				材料.数量*材料.预算价含税;
			}
		)
	)
}



///////////////////////////////////////////////////////////////
//
//  材机分析界面重算变量
//
///////////////////////////////////////////////////////////////

//*************************拆分材料父级市场价重算_不含税************************
BEGIN:拆分材料父级市场价_定额重算_不含税
${
     sum(source,"材料",
		?#{
			->材料.拆分 == 1 
			:
			round(_拆分子级人工市场价合价_消材_不含税(),2)+round(_拆分子级机械市场价合价_消材_不含税(),2)+round(_拆分子级材料市场价合价_消材_不含税(),2);
		}
	)
}

BEGIN:_拆分子级人工市场价合价_消材_不含税
${
	?#{
		->@工程信息.建筑人工按系数调差 =="0" && 材料.项目划分类型!="余物清理建筑"
		:
		sum(_过滤人工_定额重算(),"人工",?人工.数量 * 人工.市场价不含税);
		->材料.项目划分类型!="余物清理建筑" && 材料.项目划分类型!="拆除建筑"
		:
		sum(_过滤人工_定额重算(),"人工",?人工.数量 * 人工.预算价不含税 * (1+@工程信息.建筑人工调差系数/100));
		->材料.项目划分类型=="拆除建筑"
		:
		sum(_过滤人工_定额重算(),"人工",?人工.数量 * 人工.预算价不含税 * (1+@工程信息.建筑拆除人工调差系数/100));
		->材料.项目划分类型=="余物清理建筑"
		:
		sum(_过滤人工_定额重算(),"人工",?人工.数量 * 人工.预算价不含税);
	}
	
	
}

BEGIN:_拆分子级机械市场价合价_消材_不含税
${
	?#{
		->材料.项目划分类型!="余物清理建筑"
		:
		sum(_过滤机械_定额重算(),"机械",?机械.数量 * 机械.市场价不含税);
		->材料.项目划分类型=="余物清理建筑"
		:
		sum(_过滤机械_定额重算(),"机械",?机械.数量 * 机械.预算价不含税);
	}
}

BEGIN:_拆分子级材料市场价合价_消材_不含税
${
	?#{
		->材料.项目划分类型!="余物清理建筑"
		:
		sum(_过滤材料_定额重算(),"材料",?材料.数量 * 材料.市场价不含税);
		->材料.项目划分类型=="余物清理建筑"
		:
		sum(_过滤材料_定额重算(),"材料",?材料.数量 * 材料.预算价不含税);
	}
}

//*************************拆分材料父级市场价重算_含税************************
BEGIN:拆分材料父级市场价_定额重算_含税
${
     sum(source,"材料",
		?#{
			->材料.拆分 == 1 
			:
			round(_拆分子级人工市场价合价_消材_含税(),2)+round(_拆分子级机械市场价合价_消材_含税(),2)+round(_拆分子级材料市场价合价_消材_含税(),2);
		}
	)
}

BEGIN:_拆分子级人工市场价合价_消材_含税
${
	?#{
		->@工程信息.建筑人工按系数调差 =="0" && 材料.项目划分类型!="余物清理建筑"
		:
		sum(_过滤人工_定额重算(),"人工",?人工.数量 * 人工.市场价含税);
		->材料.项目划分类型!="余物清理建筑" && 材料.项目划分类型!="拆除建筑"
		:
		sum(_过滤人工_定额重算(),"人工",?人工.数量 * 人工.预算价含税 * (1+@工程信息.建筑人工调差系数/100));
		->材料.项目划分类型=="拆除建筑"
	    :
		sum(_过滤人工_定额重算(),"人工",?人工.数量 * 人工.预算价含税 * (1+@工程信息.建筑拆除人工调差系数/100));
		->材料.项目划分类型=="余物清理建筑"
		:
		sum(_过滤人工_定额重算(),"人工",?人工.数量 * 人工.预算价含税);
	}
	

}

BEGIN:_拆分子级机械市场价合价_消材_含税
${
	?#{
		->材料.项目划分类型!="余物清理建筑"
		:
		sum(_过滤机械_定额重算(),"机械",?机械.数量 * 机械.市场价含税);
		->材料.项目划分类型=="余物清理建筑"
		:
		sum(_过滤机械_定额重算(),"机械",?机械.数量 * 机械.预算价含税);
	}
}

BEGIN:_拆分子级材料市场价合价_消材_含税
${
	?#{
		->材料.项目划分类型!="余物清理建筑"
		:
		sum(_过滤材料_定额重算(),"材料",?材料.数量 * 材料.市场价含税);
		->材料.项目划分类型!="余物清理建筑"
		:
		sum(_过滤材料_定额重算(),"材料",?材料.数量 * 材料.预算价含税);
	}
}

//*************************拆分材料父级预算价重算_不含税************************
BEGIN:拆分材料父级预算价_定额重算_不含税
${
     sum(source,"材料",
		?#{
			->材料.拆分 == 1 
			:
			round(_拆分子级人工预算价合价_消材_不含税(),2)+round(_拆分子级机械预算价合价_消材_不含税(),2)+round(_拆分子级材料预算价合价_消材_不含税(),2);
		}
	)
}

BEGIN:_拆分子级人工预算价合价_消材_不含税
${
	sum(_过滤人工_定额重算(),"人工",?人工.数量 * 人工.预算价不含税)
}

BEGIN:_拆分子级机械预算价合价_消材_不含税
${
	sum(_过滤机械_定额重算(),"机械",?机械.数量 * 机械.预算价不含税)
}

BEGIN:_拆分子级材料预算价合价_消材_不含税
${
	sum(_过滤材料_定额重算(),"材料",?材料.数量 * 材料.预算价不含税)
}

//*************************拆分材料父级预算价重算_含税************************
BEGIN:拆分材料父级预算价_定额重算_含税
${
     sum(source,"材料",
		?#{
			->材料.拆分 == 1 
			:
			round(_拆分子级人工预算价合价_消材_含税(),2)+round(_拆分子级机械预算价合价_消材_含税(),2)+round(_拆分子级材料预算价合价_消材_含税(),2);
		}
	)
}

BEGIN:_拆分子级人工预算价合价_消材_含税
${
	sum(_过滤人工_定额重算(),"人工",?人工.数量 * 人工.预算价含税)
}

BEGIN:_拆分子级机械预算价合价_消材_含税
${
	sum(_过滤机械_定额重算(),"机械",?机械.数量 * 机械.预算价含税)
}

BEGIN:_拆分子级材料预算价合价_消材_含税
${
	sum(_过滤材料_定额重算(),"材料",?材料.数量 * 材料.预算价含税)
}

///////////////////////////////////////////////////////////////
//
//  过滤函数
//
///////////////////////////////////////////////////////////////

BEGIN:_过滤定额_定额重算
${
	filter(source,"工程量",?工程量.type == "定额")
}

BEGIN:_过滤主材_定额重算
${
	filter(source,"工程量",?工程量.type == "主材")
}

BEGIN:_过滤人工_定额重算
${
	filter(items,"人材机",?人材机.type == "人工")
}

BEGIN:_过滤人工工日_定额重算
${
	filter(items,"人材机",?人材机.type == "人工" && 人材机.单位 != "%")
}
	
BEGIN:_过滤材料_定额重算
${
	filter(items,"人材机",?人材机.type == "消材" && 人材机.编码 != "C22050104" && 人材机.编码 != "C99010102" && 人材机.编码 != "C22050103" && 人材机.编码 != "C99010101" && 人材机.计价类型 == "计价材料")
}

BEGIN:_过滤百分比材料_定额重算
${
	filter(items,"人材机",?人材机.type == "消材" && (人材机.编码 == "C22050103" || 人材机.编码 == "C99010101"))
}

BEGIN:_过滤元材料_定额重算
${
	filter(items,"人材机",?人材机.type == "消材" && (人材机.编码 == "C22050104" ||人材机.编码 == "C99010102"))
}

BEGIN:_过滤机械_定额重算
${
	filter(items,"人材机",?人材机.type == "机械" && 人材机.编码 != "J99-01-098" && 人材机.编码 != "J99-01-099")
}

BEGIN:_过滤百分比机械_定额重算
${
	filter(items,"人材机",?人材机.type == "机械" && 人材机.编码 == "J99-01-098")
}

BEGIN:_过滤元机械_定额重算
${
	filter(items,"人材机",?人材机.type == "机械" && 人材机.编码 == "J99-01-099")
}