///////////////////////////////////////////////////////////////
//
//  定额
//
///////////////////////////////////////////////////////////////
BEGIN:定额_取费_人工费
${
	sum(_过滤取费定额(),"工程量",?工程量.数量 * 工程量.人工费 * 工程量.人工系数 * 工程量.定额系数)
}

BEGIN:定额_取费_甲供材料费不含税
${
	sum(_过滤取费定额(),"工程量",?工程量.数量 * 工程量.甲供材料费不含税 * 工程量.材料系数 * 工程量.定额系数)
}

BEGIN:定额_取费_甲供材料费含税
${
	sum(_过滤取费定额(),"工程量",?工程量.数量 * 工程量.甲供材料费含税 * 工程量.材料系数 * 工程量.定额系数)
}

BEGIN:定额_取费_乙供材料费不含税
${
	sum(_过滤取费定额(),"工程量",?工程量.数量 * (工程量.乙供材料费不含税) * 工程量.材料系数 * 工程量.定额系数)
}
BEGIN:定额_取费_乙供材料费含税
${
	sum(_过滤取费定额(),"工程量",?工程量.数量 * (工程量.乙供材料费含税) * 工程量.材料系数 * 工程量.定额系数)
}
BEGIN:定额_取费_机械费
${
	sum(_过滤取费定额(),"工程量",?工程量.数量 * 工程量.机械费 * 工程量.机械系数 * 工程量.定额系数)
}

BEGIN:定额_不取费_人工费
${
	sum(_过滤不取费定额(),"不取费定额",?不取费定额.人工费 * 不取费定额.人工系数 * 不取费定额.定额系数 * 不取费定额.数量)
}

BEGIN:定额_不取费_甲供材料费不含税
${
	sum(_过滤不取费定额(),"不取费定额",?{
	 iif(@工程信息.专业类型 == "变电" || @工程信息.专业类型 == "发电" || @工程信息.项目类型 =="陆上电缆线路工程" || @工程信息.项目类型 =="水下电缆线路工程",?(不取费定额.甲供材料费不含税 * 不取费定额.材料系数 * 不取费定额.定额系数 * 不取费定额.数量),0);
	})
	
}

BEGIN:定额_不取费_甲供材料费含税
${
	sum(_过滤不取费定额(),"不取费定额",?不取费定额.甲供材料费含税*不取费定额.材料系数 * 不取费定额.定额系数 * 不取费定额.数量)
}

BEGIN:定额_不取费_乙供材料费不含税
${
	sum(_过滤不取费定额(),"不取费定额",?不取费定额.乙供材料费不含税 * 不取费定额.材料系数 * 不取费定额.定额系数 * 不取费定额.数量)
}
BEGIN:定额_不取费_乙供材料费含税
${
	sum(_过滤不取费定额(),"不取费定额",?不取费定额.乙供材料费含税 * 不取费定额.材料系数 * 不取费定额.定额系数 * 不取费定额.数量)
}
BEGIN:定额_不取费_机械费
${
	sum(_过滤不取费定额(),"不取费定额",?不取费定额.机械费 * 不取费定额.机械系数 * 不取费定额.定额系数 * 不取费定额.数量)
}

///////////////////////////////////////////////////////////////////////////////////////////
BEGIN:定额_取费_人工价差
${
	sum(_过滤取费定额(),"定额",
		?#{->@工程信息.建筑人工按系数调差 =="0" && @工程信息.安装人工按系数调差 =="0"
			:
			sum(_过滤人工(),"人工",?(人工.市场价不含税-人工.预算价不含税)*人工.数量*定额.人工系数*定额.定额系数*定额.数量);
		   ->
		   :
			定额.数量*定额.人工费*定额.人工系数*定额.定额系数*
			#{
				->定额.调差类型 == "建筑"
				:
				@工程信息.建筑人工调差系数/100;
				->定额.调差类型 == "安装"
				:
				@工程信息.人工调差系数/100;
				->定额.调差类型 == "拆除建筑"
				:
				@工程信息.建筑拆除人工调差系数/100;
				->定额.调差类型 == "拆除安装"
				:
				@工程信息.拆除人工调差系数/100;
			 };
		  }
	    )
}

BEGIN:定额_取费_甲供材料价差不含税
${
 sum(_过滤取费定额(),"定额",
	?#{->定额.调差类型 == "建筑" && @工程信息.建筑人工按系数调差 =="0"
		:
		sum(_过滤材料(),"材料",
			?#{
				-> 材料.拆分 == 0 && 材料.供货方 == "甲供"
				:
				(材料.市场价不含税-材料.预算价不含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤甲供子项(),"子项",?(子项.市场价不含税-子项.预算价不含税)*子项.数量*材料.数量);
			  }
		   );
		->定额.调差类型 == "建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				-> 材料.拆分 == 0 && 材料.供货方 == "甲供"
				:
				(材料.市场价不含税-材料.预算价不含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤甲供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价不含税*@工程信息.建筑人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价不含税-子项.预算价不含税)*子项.数量*材料.数量;
							}
				   );
			  }
		    );
		->定额.调差类型 == "拆除建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				-> 材料.拆分 == 0 && 材料.供货方 == "甲供"
				:
				(材料.市场价不含税-材料.预算价不含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤甲供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价不含税*@工程信息.建筑拆除人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价不含税-子项.预算价不含税)*子项.数量*材料.数量;
							}
				   );
			  }
		    );
		->定额.调差类型 == "安装"
		:
		#{
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="1"
		:
		定额.甲供材料费不含税*parent.材料调差系数/100;
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="0"
		:
		sum(_过滤甲供材料(),"材料",?(材料.市场价不含税-材料.预算价不含税)*材料.数量);
		->
		:
		定额.甲供材料费不含税*@工程信息.材料调差系数/100;
		};
		->定额.调差类型 == "拆除安装"
		:
		定额.甲供材料费不含税*@工程信息.拆除材料调差系数/100;
	  }*定额.材料系数*定额.定额系数*定额.数量 
	);
}

BEGIN:定额_取费_甲供材料价差含税
${
	sum(_过滤取费定额(),"定额",
	?#{->定额.调差类型 == "建筑" && @工程信息.建筑人工按系数调差 =="0"
		:
		sum(_过滤材料(),"材料",
			?#{
				-> 材料.拆分 == 0 && 材料.供货方 == "甲供"
				:
				(材料.市场价含税-材料.预算价含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤甲供子项(),"子项",?(子项.市场价含税-子项.预算价含税)*子项.数量*材料.数量);
			  }
		   );
		->定额.调差类型 == "建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				->材料.拆分 == 0 && 材料.供货方 == "甲供"
				:
				(材料.市场价含税-材料.预算价含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤甲供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价含税*@工程信息.建筑人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价含税-子项.预算价含税)*子项.数量*材料.数量;
							}
					);
			  }
		   );
		->定额.调差类型 == "拆除建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				->材料.拆分 == 0 && 材料.供货方 == "甲供"
				:
				(材料.市场价含税-材料.预算价含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤甲供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价含税*@工程信息.建筑拆除人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价含税-子项.预算价含税)*子项.数量*材料.数量;
							}
					);
			  }
		   );
		->定额.调差类型 == "安装"
		:
		#{
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="1"
		:
		定额.甲供材料费含税*parent.材料调差系数/100;
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="0"
		:
		sum(_过滤甲供材料(),"材料",?(材料.市场价含税-材料.预算价含税)*材料.数量);
		->
		:
		定额.甲供材料费含税*@工程信息.材料调差系数/100;
		};
		->定额.调差类型 == "拆除安装"
		:
		定额.甲供材料费含税*@工程信息.拆除材料调差系数/100;
		}*定额.材料系数*定额.定额系数*定额.数量
	)
	
}
BEGIN:定额_取费_乙供材料价差不含税
${
	sum(_过滤取费定额(),"定额",
	?#{->定额.调差类型 == "建筑" && @工程信息.建筑人工按系数调差 =="0"
		:
		sum(_过滤材料(),"材料",
			?#{
				-> 材料.拆分 == 0 && 材料.供货方 == "乙供"
				:
				(材料.市场价不含税-材料.预算价不含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤乙供子项(),"子项",?(子项.市场价不含税-子项.预算价不含税)*子项.数量*材料.数量);
			  }
		    );
	   ->定额.调差类型 == "建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				-> 材料.拆分 == 0 && 材料.供货方 == "乙供"
				:
				(材料.市场价不含税-材料.预算价不含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤乙供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价不含税*@工程信息.建筑人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价不含税-子项.预算价不含税)*子项.数量*材料.数量;
							}	   
				   );
			  }
		   );
		->定额.调差类型 == "拆除建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				-> 材料.拆分 == 0 && 材料.供货方 == "乙供"
				:
				(材料.市场价不含税-材料.预算价不含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤乙供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价不含税*@工程信息.建筑拆除人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价不含税-子项.预算价不含税)*子项.数量*材料.数量;
							}	   
				   );
			  }
		   );
	   ->定额.调差类型 == "安装"
		:
		#{
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="1"
		:
		定额.乙供材料费不含税*parent.材料调差系数/100;
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="0"
		:
		sum(_过滤乙供材料(),"材料",?(材料.市场价不含税-材料.预算价不含税)*材料.数量);
		->
		:
		定额.乙供材料费不含税*@工程信息.材料调差系数/100;
		};
		->定额.调差类型 == "拆除安装"
		:
		定额.乙供材料费不含税*@工程信息.拆除材料调差系数/100;
		}*定额.材料系数*定额.定额系数*定额.数量
	) 
	
}
BEGIN:定额_取费_乙供材料价差含税
${
 sum(_过滤取费定额(),"定额",
	?#{
	   ->定额.调差类型 == "建筑" && @工程信息.建筑人工按系数调差 =="0"
		:
		sum(_过滤材料(),"材料",
			?#{
				->材料.拆分 == 0 && 材料.供货方 == "乙供"
				:
				(材料.市场价含税-材料.预算价含税)*材料.数量;
				->  材料.拆分 == 1
				:
				sum(_过滤乙供子项(),"子项",?(子项.市场价含税-子项.预算价含税)*子项.数量*材料.数量);
			  }
			);
	   ->定额.调差类型 == "建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				->材料.拆分 == 0 && 材料.供货方 == "乙供"
				:
				(材料.市场价含税-材料.预算价含税)*材料.数量;
				->  材料.拆分 == 1
				:
				sum(_过滤乙供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价含税*@工程信息.建筑人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价含税-子项.预算价含税)*子项.数量*材料.数量;
							}	   
				   );
			  }
		   );
		->定额.调差类型 == "拆除建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				->材料.拆分 == 0 && 材料.供货方 == "乙供"
				:
				(材料.市场价含税-材料.预算价含税)*材料.数量;
				->  材料.拆分 == 1
				:
				sum(_过滤乙供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价含税*@工程信息.建筑拆除人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价含税-子项.预算价含税)*子项.数量*材料.数量;
							}	   
				   );
			  }
		   );
	   ->定额.调差类型 == "安装"
		:
		#{
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="1"
		:
		定额.乙供材料费含税*parent.材料调差系数/100;
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="0"
		:
		sum(_过滤乙供材料(),"材料",?(材料.市场价含税-材料.预算价含税)*材料.数量);
		->
		:
		定额.乙供材料费含税*@工程信息.材料调差系数/100;
		};
		->定额.调差类型 == "拆除安装"
		:
		定额.乙供材料费含税*@工程信息.拆除材料调差系数/100;
	  }*定额.材料系数*定额.定额系数*定额.数量 
    );
}


BEGIN:定额_取费_机械价差
${
	sum(_过滤取费定额(),"定额",
	?#{
		->定额.调差类型 == "建筑" && @工程信息.建筑人工按系数调差 =="0"
		:
		sum(_过滤机械(),"机械",
			?#{
				->机械.拆分 == 0
				:
				(机械.市场价不含税-机械.预算价不含税)*机械.数量;
				->机械.拆分 == 1
				:
				 sum(_过滤机械子项(),"子项",?(子项.市场价不含税-子项.预算价不含税)*子项.数量*机械.数量);
			  }
		   );
		->定额.调差类型 == "建筑"
		:
		sum(_过滤机械(),"机械",
			?#{
				->机械.拆分 == 0
				:
				(机械.市场价不含税-机械.预算价不含税)*机械.数量;
				->机械.拆分 == 1
				:
				 sum(
				      _过滤机械子项(),"子项",
					   ?#{
						   	->子项.type == "人工"
							:
							子项.预算价不含税*@工程信息.建筑人工调差系数/100*子项.数量*机械.数量;
							->子项.type == "消材" || 子项.type == "机械"
							:
							(子项.市场价不含税-子项.预算价不含税)*子项.数量*机械.数量;
						 }
					);
			 }
		   );
		->定额.调差类型 == "拆除建筑"
		:
		sum(_过滤机械(),"机械",
			?#{
				->机械.拆分 == 0
				:
				(机械.市场价不含税-机械.预算价不含税)*机械.数量;
				->机械.拆分 == 1
				:
				 sum(
				      _过滤机械子项(),"子项",
					   ?#{
						   	->子项.type == "人工"
							:
							子项.预算价不含税*@工程信息.建筑拆除人工调差系数/100*子项.数量*机械.数量;
							->子项.type == "消材" || 子项.type == "机械"
							:
							(子项.市场价不含税-子项.预算价不含税)*子项.数量*机械.数量;
						 }
					);
			 }
		   );
		->定额.调差类型 == "安装"
		:
		#{
		->@工程信息.专业类型 == "发电" && @工程信息.安装机械按系数调差 =="1"
		:
		定额.机械费不含税*parent.机械调差系数/100;
		->@工程信息.专业类型 == "发电" && @工程信息.安装机械按系数调差 =="0"
		:
		sum(_过滤机械(),"机械",?(机械.市场价不含税-机械.预算价不含税)*机械.数量);
		->
		:
		定额.机械费不含税*@工程信息.机械调差系数/100;
		};
		->定额.调差类型 == "拆除安装"
		:
		定额.机械费不含税*@工程信息.拆除机械调差系数/100;
		}*定额.机械系数*定额.定额系数*定额.数量
	)
}

BEGIN:定额_不取费_人工价差
${
  sum(_过滤不取费定额(),"定额",
    ?#{
	   ->@工程信息.建筑人工按系数调差 =="0"  &&  @工程信息.安装人工按系数调差 =="0"
	   :
	   sum(_过滤人工(),"人工",?(人工.市场价不含税-人工.预算价不含税)*人工.数量*定额.人工系数*定额.定额系数*定额.数量);
	   ->
	   :
		定额.数量*定额.人工费*定额.人工系数*定额.定额系数*
		#{
		    ->定额.调差类型 == "建筑"
			:
			@工程信息.建筑人工调差系数/100;
			->(定额.调差类型 == "安装")
			:
			@工程信息.人工调差系数/100;
			->定额.调差类型 == "拆除建筑"
			:
			@工程信息.建筑拆除人工调差系数/100;
			->(定额.调差类型 == "拆除安装")
			:
			@工程信息.拆除人工调差系数/100;
     	 };
	  }
     )
}

BEGIN:定额_不取费_甲供材料价差不含税
${
	sum(_过滤不取费定额(),"定额",
	?#{
		->定额.调差类型 == "建筑" && @工程信息.建筑人工按系数调差 =="0"
		:
		sum(_过滤材料(),"材料",
			?#{
				-> 材料.拆分 == 0 && 材料.供货方 == "甲供"
				:
				(材料.市场价不含税-材料.预算价不含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤甲供子项(),"子项",?(子项.市场价不含税-子项.预算价不含税)*子项.数量*材料.数量);
			  }
		   );
		->定额.调差类型 == "建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				-> 材料.拆分 == 0 && 材料.供货方 == "甲供"
				:
				(材料.市场价不含税-材料.预算价不含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤甲供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价不含税*@工程信息.建筑人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价不含税-子项.预算价不含税)*子项.数量*材料.数量;
							}
				    );
			  }
		   );
		->定额.调差类型 == "拆除建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				-> 材料.拆分 == 0 && 材料.供货方 == "甲供"
				:
				(材料.市场价不含税-材料.预算价不含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤甲供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价不含税*@工程信息.建筑拆除人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价不含税-子项.预算价不含税)*子项.数量*材料.数量;
							}
				    );
			  }
		   );
		->定额.调差类型 == "安装"
		:
		#{
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="1"
		:
		定额.甲供材料费不含税*parent.材料调差系数/100;
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="0"
		:
		sum(_过滤甲供材料(),"材料",?(材料.市场价不含税-材料.预算价不含税)*材料.数量);
		->
		:
		定额.甲供材料费不含税*@工程信息.材料调差系数/100;
		};
		->定额.调差类型 == "拆除安装"
		:
		定额.甲供材料费不含税*@工程信息.拆除材料调差系数/100;
	  }*定额.材料系数*定额.定额系数*定额.数量
	) 
	
}

BEGIN:定额_不取费_甲供材料价差含税
${
	sum(_过滤不取费定额(),"定额",
	?#{
		->定额.调差类型 == "建筑" && @工程信息.建筑人工按系数调差 =="0"
		:
		sum(_过滤材料(),"材料",
			?#{
				-> 材料.拆分 == 0 && 材料.供货方 == "甲供"
				:
				(材料.市场价含税-材料.预算价含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤甲供子项(),"子项",?(子项.市场价含税-子项.预算价含税)*子项.数量*材料.数量);
			  }
		   );
		->定额.调差类型 == "建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				->材料.拆分 == 0 && 材料.供货方 == "甲供"
				:
				(材料.市场价含税-材料.预算价含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤甲供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价含税*@工程信息.建筑人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价含税-子项.预算价含税)*子项.数量*材料.数量;
							}
					);
			  }
		   );
		->定额.调差类型 == "拆除建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				->材料.拆分 == 0 && 材料.供货方 == "甲供"
				:
				(材料.市场价含税-材料.预算价含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤甲供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价含税*@工程信息.建筑拆除人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价含税-子项.预算价含税)*子项.数量*材料.数量;
							}
					);
			  }
		   );
		->定额.调差类型 == "安装"
		:
		#{
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="1"
		:
		定额.甲供材料费含税*parent.材料调差系数/100;
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="0"
		:
		sum(_过滤甲供材料(),"材料",?(材料.市场价含税-材料.预算价含税)*材料.数量);
		->
		:
		定额.甲供材料费含税*@工程信息.材料调差系数/100;
		};
		->定额.调差类型 == "拆除安装"
		:
		定额.甲供材料费含税*@工程信息.拆除材料调差系数/100;
	  }*定额.材料系数*定额.定额系数*定额.数量
	  )	
}
BEGIN:定额_不取费_乙供材料价差不含税
${
	sum(_过滤不取费定额(),"定额",
	?#{
		->定额.调差类型 == "建筑" && @工程信息.建筑人工按系数调差 =="0"
		:
		sum(_过滤材料(),"材料",
			?#{
				-> 材料.拆分 == 0 && 材料.供货方 == "乙供"
				:
				(材料.市场价不含税-材料.预算价不含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤乙供子项(),"子项",?(子项.市场价不含税-子项.预算价不含税)*子项.数量*材料.数量);
			  }
		   );
		->定额.调差类型 == "建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				-> 材料.拆分 == 0 && 材料.供货方 == "乙供"
				:
				(材料.市场价不含税-材料.预算价不含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤乙供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价不含税*@工程信息.建筑人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价不含税-子项.预算价不含税)*子项.数量*材料.数量;
							}	   
				   );
			  }
		   );
		->定额.调差类型 == "拆除建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				-> 材料.拆分 == 0 && 材料.供货方 == "乙供"
				:
				(材料.市场价不含税-材料.预算价不含税)*材料.数量;
				-> 材料.拆分 == 1
				:
				sum(_过滤乙供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价不含税*@工程信息.建筑拆除人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价不含税-子项.预算价不含税)*子项.数量*材料.数量;
							}	   
				   );
			  }
		   );
		->定额.调差类型 == "安装"
		:
		#{
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="1"
		:
		定额.乙供材料费不含税*parent.材料调差系数/100;
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="0"
		:
		sum(_过滤乙供材料(),"材料",?(材料.市场价不含税-材料.预算价不含税)*材料.数量);
		->
		:
		定额.乙供材料费不含税*@工程信息.材料调差系数/100;
		};
		->定额.调差类型 == "拆除安装"
		:
		定额.乙供材料费不含税*@工程信息.拆除材料调差系数/100;
	  }*定额.材料系数*定额.定额系数*定额.数量
	   ) 
}

BEGIN:定额_不取费_乙供材料价差含税
${
	sum(_过滤不取费定额(),"定额",
	?#{
		->定额.调差类型 == "建筑" && @工程信息.建筑人工按系数调差 =="0"
		:
		sum(_过滤材料(),"材料",
			?#{
				->材料.拆分 == 0 && 材料.供货方 == "乙供"
				:
				(材料.市场价含税-材料.预算价含税)*材料.数量;
				->  材料.拆分 == 1
				:
				sum(_过滤乙供子项(),"子项",?(子项.市场价含税-子项.预算价含税)*子项.数量*材料.数量);
			  }
			);
		->定额.调差类型 == "建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				->材料.拆分 == 0 && 材料.供货方 == "乙供"
				:
				(材料.市场价含税-材料.预算价含税)*材料.数量;
				->  材料.拆分 == 1
				:
				sum(_过滤乙供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价含税*@工程信息.建筑人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价含税-子项.预算价含税)*子项.数量*材料.数量;
							}	   
				   );
			  }
		   );
		->定额.调差类型 == "拆除建筑"
		:
		sum(_过滤材料(),"材料",
			?#{
				->材料.拆分 == 0 && 材料.供货方 == "乙供"
				:
				(材料.市场价含税-材料.预算价含税)*材料.数量;
				->  材料.拆分 == 1
				:
				sum(_过滤乙供子项(),"子项",
						  ?#{
							  ->子项.type == "人工"
							  :
							  子项.预算价含税*@工程信息.建筑拆除人工调差系数/100*子项.数量*材料.数量;
							  ->子项.type == "消材"||子项.type == "机械"
							  :
							  (子项.市场价含税-子项.预算价含税)*子项.数量*材料.数量;
							}	   
				   );
			  }
		   );
		->定额.调差类型 == "安装"
		:
		#{
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="1"
		:
		定额.乙供材料费含税*parent.材料调差系数/100;
		->@工程信息.专业类型 == "发电" && @工程信息.安装材料按系数调差 =="0"
		:
		sum(_过滤乙供材料(),"材料",?(材料.市场价含税-材料.预算价含税)*材料.数量);
		->
		:
		定额.乙供材料费含税*@工程信息.材料调差系数/100;
		};
		->定额.调差类型 == "拆除安装"
		:
		定额.乙供材料费含税*@工程信息.拆除材料调差系数/100;
		}*定额.材料系数*定额.定额系数*定额.数量
	) 
	
}

BEGIN:定额_不取费_机械价差
${
	sum(_过滤不取费定额(),"定额",
	?#{
		->定额.调差类型 == "建筑" && @工程信息.建筑人工按系数调差 =="0"
		:
		sum(_过滤机械(),"机械",
			?#{
				->机械.拆分 == 0
				:
				(机械.市场价不含税-机械.预算价不含税)*机械.数量;
				->机械.拆分 == 1
				:
				 sum(_过滤机械子项(),"子项",?(子项.市场价不含税-子项.预算价不含税)*子项.数量*机械.数量);
			  }
		    );
		->定额.调差类型 == "建筑"
		:
		sum(_过滤机械(),"机械",
			?#{
				->机械.拆分 == 0
				:
				(机械.市场价不含税-机械.预算价不含税)*机械.数量;
				->机械.拆分 == 1
				:
				 sum(
				      _过滤机械子项(),"子项",
					   ?#{
						   	->子项.type == "人工"
							:
							子项.预算价不含税*@工程信息.建筑人工调差系数/100*子项.数量*机械.数量;
							->子项.type == "消材" || 子项.type == "机械"
							:
							(子项.市场价不含税-子项.预算价不含税)*子项.数量*机械.数量;
						}
					);
			 }
		   );
		->定额.调差类型 == "拆除建筑"
		:
		sum(_过滤机械(),"机械",
			?#{
				->机械.拆分 == 0
				:
				(机械.市场价不含税-机械.预算价不含税)*机械.数量;
				->机械.拆分 == 1
				:
				 sum(
				      _过滤机械子项(),"子项",
					   ?#{
						   	->子项.type == "人工"
							:
							子项.预算价不含税*@工程信息.建筑拆除人工调差系数/100*子项.数量*机械.数量;
							->子项.type == "消材" || 子项.type == "机械"
							:
							(子项.市场价不含税-子项.预算价不含税)*子项.数量*机械.数量;
						}
					);
			 }
		   );
		->定额.调差类型 == "安装"
		:
		#{
		->@工程信息.专业类型 == "发电" && @工程信息.安装机械按系数调差 =="1"
		:
		定额.机械费不含税*parent.机械调差系数/100;
		->@工程信息.专业类型 == "发电" && @工程信息.安装机械按系数调差 =="0"
		:
		sum(_过滤机械(),"机械",?(机械.市场价不含税-机械.预算价不含税)*机械.数量);
		->
		:
		定额.机械费不含税*@工程信息.机械调差系数/100;
		};
		->定额.调差类型 == "拆除安装"
		:
		定额.机械费不含税*@工程信息.拆除机械调差系数/100;
		}*定额.机械系数*定额.定额系数*定额.数量
	)
}

///////////////////////////////////////////////////////////////
//
//  主材
//
///////////////////////////////////////////////////////////////
BEGIN:主材_取费_甲供主材费不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==0
			:
			主材.数量 * 主材.预算价不含税;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税);
		}
	)
}

BEGIN:主材_取费_甲供主材费含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==0
			:
			主材.数量 * 主材.预算价含税;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税);
		}
	)
}

BEGIN:主材_取费_甲供主材损耗费不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==0
			:
			主材.数量 * 主材.预算价不含税 * 主材.损耗 /100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税 * 拆分子项.损耗 /100);	
		}
	)
}

BEGIN:主材_取费_甲供主材损耗费含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==0
			:
			主材.数量 * 主材.预算价含税 * 主材.损耗 /100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税 * 拆分子项.损耗 /100);	
		}
	)
}

BEGIN:主材_取费_甲供主材价差不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==0
			:
			主材.数量 * (主材.市场价不含税-主材.预算价不含税);
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * (拆分子项.市场价不含税-拆分子项.预算价不含税));
		}
	)
}

BEGIN:主材_取费_甲供主材价差含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==0
			:
			主材.数量 * (主材.市场价含税-主材.预算价含税);
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * (拆分子项.市场价含税-拆分子项.预算价含税));
		}
	)
}

BEGIN:主材_取费_甲供主材损耗价差不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==0
			:
			主材.数量 * (主材.市场价不含税-主材.预算价不含税) * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * (拆分子项.市场价不含税-拆分子项.预算价不含税) * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_取费_甲供主材损耗价差含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==0
			:
			主材.数量 * (主材.市场价含税-主材.预算价含税) * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * (拆分子项.市场价含税-拆分子项.预算价含税) * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_取费_乙供主材费不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==0
			:
			主材.数量 * 主材.预算价不含税;
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税);
		}
	)
}
BEGIN:主材_取费_乙供主材费含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==0
			:
			主材.数量 * 主材.预算价含税;
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税);
		}
	)
}
BEGIN:主材_取费_乙供主材损耗费不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==0
			:
			主材.数量 * 主材.预算价不含税 * 主材.损耗 /100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税 * 拆分子项.损耗 /100);	
		}
	)
}
BEGIN:主材_取费_乙供主材损耗费含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==0
			:
			主材.数量 * 主材.预算价含税 * 主材.损耗 /100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税 * 拆分子项.损耗 /100);	
		}
	)
}
BEGIN:主材_取费_乙供主材价差不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==0
			:
			主材.数量 * (主材.市场价不含税-主材.预算价不含税);
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * (拆分子项.市场价不含税-拆分子项.预算价不含税));
		}
	)
}

BEGIN:主材_取费_乙供主材价差含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==0
			:
			主材.数量 * (主材.市场价含税-主材.预算价含税);
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * (拆分子项.市场价含税-拆分子项.预算价含税));
		}
	)
}

BEGIN:主材_取费_乙供主材损耗价差不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==0
			:
			主材.数量 * (主材.市场价不含税-主材.预算价不含税) * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * (拆分子项.市场价不含税-拆分子项.预算价不含税) * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_取费_运输重量
${
		sum(_过滤主材(),"主材",
			?#{
				->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.设备性材料==0
				:
				主材.单重*主材.数量*(1+主材.损耗/100)*(1+主材.毛重/100)/1000;
				->主材.拆分 == 1
				:
				sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.单重*拆分子项.数量*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)/1000) + 
				sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.单重*拆分子项.数量*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)/1000);
			}
		)
}

BEGIN:主材_取费_运输费用
${
	#{
		->@工程信息.专业类型=="送电"
		:
		sum(_过滤主材(),"主材",
			?#{
				->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.设备性材料==0
				:
				主材.单重/1000*主材.数量*主材.运输单价*(1+主材.损耗/100)*(1+主材.毛重/100);
				->主材.拆分 == 1
				:
				sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.单重/1000*拆分子项.数量*拆分子项.运输单价*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)) + 
				sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.单重/1000*拆分子项.数量*拆分子项.运输单价*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100));
			}
		);
	}
}

BEGIN:主材_不取费_甲供主材费不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
			   主材.预算价不含税 * 主材.数量;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税);
		}
	)
}
 
BEGIN:主材_不取费_甲供主材费含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
		    主材.预算价含税 * 主材.数量;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税);
		}
	)
}
 
BEGIN:主材_不取费_甲供主材损耗费不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
			主材.预算价不含税*主材.数量 * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税 * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_不取费_甲供主材损耗费含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
			主材.预算价含税 * 主材.数量 * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税 * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_不取费_甲供主材价差不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
			(主材.市场价不含税-主材.预算价不含税)*主材.数量;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?(拆分子项.市场价不含税-拆分子项.预算价不含税)*拆分子项.数量);
		}
	)
}

BEGIN:主材_不取费_甲供主材价差含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
		    (主材.市场价含税-主材.预算价含税)*主材.数量;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?(拆分子项.市场价含税-拆分子项.预算价含税)*拆分子项.数量);
		}
	)
}

BEGIN:主材_不取费_甲供主材损耗价差不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
		    (主材.市场价不含税-主材.预算价不含税)*主材.数量*主材.损耗/100;
			->主材.拆分 == 1 
	        :
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?(拆分子项.市场价不含税-拆分子项.预算价不含税)*拆分子项.数量*拆分子项.损耗/100);
		}
	)
}

BEGIN:主材_不取费_甲供主材损耗价差含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
		    (主材.市场价含税-主材.预算价含税)*主材.数量*主材.损耗/100;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?(拆分子项.市场价含税-拆分子项.预算价含税)*拆分子项.数量*拆分子项.损耗/100);
		}
	)
}

BEGIN:主材_不取费_乙供主材费不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
		    主材.预算价不含税*主材.数量;
			->主材.拆分 == 1 
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税);
		}
	)
}
BEGIN:主材_不取费_乙供主材费含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
		    主材.预算价含税*主材.数量;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税);
		}
	)
}
BEGIN:主材_不取费_乙供主材损耗费不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
		    主材.预算价不含税*主材.数量*主材.损耗/100;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税*拆分子项.损耗/100);
		}
	)
}
 BEGIN:主材_不取费_乙供主材损耗费含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
		    主材.预算价含税*主材.数量*主材.损耗/100;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税*拆分子项.损耗/100);
		}
	)
} 
BEGIN:主材_不取费_乙供主材价差不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
		    (主材.市场价不含税-主材.预算价不含税)*主材.数量;
			->主材.拆分 == 1 
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?(拆分子项.市场价不含税-拆分子项.预算价不含税)*拆分子项.数量);
		}
	)
}

BEGIN:主材_不取费_乙供主材价差含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
		    (主材.市场价含税-主材.预算价含税)*主材.数量;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?(拆分子项.市场价含税-拆分子项.预算价含税)*拆分子项.数量);
		}
	)
}

BEGIN:主材_不取费_乙供主材损耗价差不含税
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==0
			:
		    (主材.市场价不含税-主材.预算价不含税)*主材.数量*主材.损耗/100;
			->主材.拆分 == 1 
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?(拆分子项.市场价不含税-拆分子项.预算价不含税)*拆分子项.数量*拆分子项.损耗/100);
		}
	)
}

BEGIN:主材_不取费_运输重量
${
		sum(_过滤主材(),"主材",
			?#{
				->主材.拆分 == 0 && 主材.费用类型 == "不取费" && 主材.设备性材料==0
				:
				主材.单重*主材.数量*(1+主材.损耗/100)*(1+主材.毛重/100)/1000;
				->主材.拆分 == 1
				:
				sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.单重*拆分子项.数量*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)/1000) + 
				sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.单重*拆分子项.数量*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)/1000);
			}
		)
}

BEGIN:主材_不取费_运输费用
${
	#{
		->@工程信息.专业类型=="送电"
		:
		sum(_过滤主材(),"主材",
			?#{
				->主材.拆分 == 0 && 主材.费用类型 == "不取费" && 主材.设备性材料==0
				:
				主材.单重/1000*主材.数量*主材.运输单价*(1+主材.损耗/100)*(1+主材.毛重/100);
				->主材.拆分 == 1
				:
				sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.单重/1000*拆分子项.数量*拆分子项.运输单价*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)) + 
				sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==0),"拆分子项",?拆分子项.单重/1000*拆分子项.数量*拆分子项.运输单价*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100));
			}
		);
	}
}

///////////////////////////////////////////////////////////////
//
//  主材-设备性材料
//
///////////////////////////////////////////////////////////////
BEGIN:主材_取费_甲供含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==1
			:
			主材.预算价含税* 主材.损耗 /100;
		}
	)
}

BEGIN:主材_取费_乙供不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==1
			:
			主材.预算价不含税* 主材.损耗 /100;
		}
	)
}

BEGIN:主材_不取费_甲供含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "不取费" && 主材.供货方 == "甲供" && 主材.设备性材料==1
			:
			主材.预算价含税* 主材.损耗 /100;
		}
	)
}

BEGIN:主材_不取费_乙供不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "不取费" && 主材.供货方 == "乙供" && 主材.设备性材料==1
			:
			主材.预算价不含税* 主材.损耗 /100;
		}
	)
}
///////////////////////////////////////////////////////////////
BEGIN:主材_取费_甲供主材费不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==1
			:
			主材.数量 * 主材.预算价不含税;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税);
		}
	)
}

BEGIN:主材_取费_甲供主材费含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==1
			:
			主材.数量 * 主材.预算价含税;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税);
		}
	)
}

BEGIN:主材_取费_甲供主材损耗费不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==1
			:
			主材.数量 * 主材.预算价不含税 * 主材.损耗 /100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税 * 拆分子项.损耗 /100);	
		}
	)
}

BEGIN:主材_取费_甲供主材损耗费含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==1
			:
			主材.数量 * 主材.预算价含税 * 主材.损耗 /100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税 * 拆分子项.损耗 /100);	
		}
	)
}

BEGIN:主材_取费_甲供主材价差不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==1
			:
			主材.数量 * (主材.市场价不含税-主材.预算价不含税);
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * (拆分子项.市场价不含税-拆分子项.预算价不含税));
		}
	)
}

BEGIN:主材_取费_甲供主材价差含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==1
			:
			主材.数量 * (主材.市场价含税-主材.预算价含税);
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * (拆分子项.市场价含税-拆分子项.预算价含税));
		}
	)
}

BEGIN:设备_普通设备_甲供设备性材料价差含税
${
	主材_取费_甲供主材价差含税_设备性材料()+主材_不取费_甲供主材价差含税_设备性材料();
}

BEGIN:设备_普通设备_甲供设备性材料损耗费含税
${
	主材_取费_甲供主材损耗费含税_设备性材料()+主材_不取费_甲供主材损耗费含税_设备性材料();
}

BEGIN:设备_普通设备_甲供设备性材料损耗价差含税
${
	主材_取费_甲供主材损耗价差含税_设备性材料()+主材_不取费_甲供主材损耗价差含税_设备性材料();
}

BEGIN:设备_普通设备_乙供设备性材料价差不含税
${
	主材_取费_乙供主材价差不含税_设备性材料()+主材_不取费_乙供主材价差不含税_设备性材料();
}

BEGIN:设备_普通设备_乙供设备性材料损耗费不含税
${
	主材_取费_乙供主材损耗费不含税_设备性材料()+主材_不取费_乙供主材损耗费不含税_设备性材料();
}

BEGIN:设备_普通设备_乙供设备性材料损耗价差不含税
${
	主材_取费_乙供主材损耗价差不含税_设备性材料()+主材_不取费_乙供主材损耗价差不含税_设备性材料();
}

BEGIN:主材_取费_甲供主材损耗价差不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==1
			:
			主材.数量 * (主材.市场价不含税-主材.预算价不含税) * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * (拆分子项.市场价不含税-拆分子项.预算价不含税) * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_取费_甲供主材损耗价差含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供" && 主材.设备性材料==1
			:
			主材.数量 * (主材.市场价含税-主材.预算价含税) * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * (拆分子项.市场价含税-拆分子项.预算价含税) * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_取费_乙供主材费不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==1
			:
			主材.数量 * 主材.预算价不含税;
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税);
		}
	)
}
BEGIN:主材_取费_乙供主材费含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==1
			:
			主材.数量 * 主材.预算价含税;
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税);
		}
	)
}
BEGIN:主材_取费_乙供主材损耗费不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==1
			:
			主材.数量 * 主材.预算价不含税 * 主材.损耗 /100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税 * 拆分子项.损耗 /100);	
		}
	)
}
BEGIN:主材_取费_乙供主材损耗费含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==1
			:
			主材.数量 * 主材.预算价含税 * 主材.损耗 /100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税 * 拆分子项.损耗 /100);	
		}
	)
}
BEGIN:主材_取费_乙供主材价差不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==1
			:
			主材.数量 * (主材.市场价不含税-主材.预算价不含税);
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * (拆分子项.市场价不含税-拆分子项.预算价不含税));
		}
	)
}

BEGIN:主材_取费_乙供主材价差含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==1
			:
			主材.数量 * (主材.市场价含税-主材.预算价含税);
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * (拆分子项.市场价含税-拆分子项.预算价含税));
		}
	)
}

BEGIN:主材_取费_乙供主材损耗价差不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==1
			:
			主材.数量 * (主材.市场价不含税-主材.预算价不含税) * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * (拆分子项.市场价不含税-拆分子项.预算价不含税) * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_取费_乙供主材损耗价差含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供" && 主材.设备性材料==1
			:
			主材.数量 * (主材.市场价含税-主材.预算价含税) * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * (拆分子项.市场价含税-拆分子项.预算价含税) * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_取费_运输重量_设备性材料
${
		sum(_过滤主材(),"主材",
			?#{
				->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.设备性材料==1
				:
				主材.单重*主材.数量*(1+主材.损耗/100)*(1+主材.毛重/100)/1000;
				->主材.拆分 == 1
				:
				sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.单重*拆分子项.数量*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)/1000) + 
				sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.单重*拆分子项.数量*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)/1000);
			}
		)
}

BEGIN:主材_取费_运输费用_设备性材料
${
	#{
		->@工程信息.专业类型=="送电"
		:
		sum(_过滤主材(),"主材",
			?#{
				->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.设备性材料==1
				:
				主材.单重/1000*主材.数量*主材.运输单价*(1+主材.损耗/100)*(1+主材.毛重/100);
				->主材.拆分 == 1
				:
				sum(filter(_过滤甲供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.单重/1000*拆分子项.数量*拆分子项.运输单价*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)) + 
				sum(filter(_过滤乙供取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.单重/1000*拆分子项.数量*拆分子项.运输单价*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100));
			}
		);
	}
}

BEGIN:主材_不取费_甲供主材费不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
			   主材.预算价不含税 * 主材.数量;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税);
		}
	)
}
 
BEGIN:主材_不取费_甲供主材费含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
		    主材.预算价含税 * 主材.数量;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税);
		}
	)
}
 
BEGIN:主材_不取费_甲供主材损耗费不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
			主材.预算价不含税*主材.数量 * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税 * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_不取费_甲供主材损耗费含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
			主材.预算价含税 * 主材.数量 * 主材.损耗 / 100;
			->主材.拆分 == 1 
			:
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税 * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_不取费_甲供主材价差不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
			(主材.市场价不含税-主材.预算价不含税)*主材.数量;
			->主材.拆分 == 1
			:
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?(拆分子项.市场价不含税-拆分子项.预算价不含税)*拆分子项.数量);
		}
	)
}

BEGIN:主材_不取费_甲供主材价差含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
		    (主材.市场价含税-主材.预算价含税)*主材.数量;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?(拆分子项.市场价含税-拆分子项.预算价含税)*拆分子项.数量);
		}
	)
}

BEGIN:主材_不取费_甲供主材损耗价差不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
		    (主材.市场价不含税-主材.预算价不含税)*主材.数量*主材.损耗/100;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?(拆分子项.市场价不含税-拆分子项.预算价不含税)*拆分子项.数量*拆分子项.损耗/100);
		}
	)
}

BEGIN:主材_不取费_甲供主材损耗价差含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
		    (主材.市场价含税-主材.预算价含税)*主材.数量*主材.损耗/100;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?(拆分子项.市场价含税-拆分子项.预算价含税)*拆分子项.数量*拆分子项.损耗/100);
		}
	)
}

BEGIN:主材_不取费_乙供主材费不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
		    主材.预算价不含税*主材.数量;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税);
		}
	)
}
BEGIN:主材_不取费_乙供主材费含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
		    主材.预算价含税*主材.数量;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税);
		}
	)
}
BEGIN:主材_不取费_乙供主材损耗费不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
		    主材.预算价不含税*主材.数量*主材.损耗/100;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税*拆分子项.损耗/100);
		}
	)
}
 BEGIN:主材_不取费_乙供主材损耗费含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
		    主材.预算价含税*主材.数量*主材.损耗/100;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税*拆分子项.损耗/100);
		}
	)
} 
BEGIN:主材_不取费_乙供主材价差不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
		    (主材.市场价不含税-主材.预算价不含税)*主材.数量;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?(拆分子项.市场价不含税-拆分子项.预算价不含税)*拆分子项.数量);
		}
	)
}

BEGIN:主材_不取费_乙供主材价差含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
		    (主材.市场价含税-主材.预算价含税)*主材.数量;
			->主材.拆分 == 1
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?(拆分子项.市场价含税-拆分子项.预算价含税)*拆分子项.数量);
		}
	)
}

BEGIN:主材_不取费_乙供主材损耗价差不含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
		    (主材.市场价不含税-主材.预算价不含税)*主材.数量*主材.损耗/100;
			->主材.拆分 == 1 
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?(拆分子项.市场价不含税-拆分子项.预算价不含税)*拆分子项.数量*拆分子项.损耗/100);
		}
	)
}

BEGIN:主材_不取费_乙供主材损耗价差含税_设备性材料
${
	sum(_过滤主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费" && 主材.设备性材料==1
			:
		    (主材.市场价含税-主材.预算价含税)*主材.数量*主材.损耗/100;
			->主材.拆分 == 1 
	        :
			sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?(拆分子项.市场价含税-拆分子项.预算价含税)*拆分子项.数量*拆分子项.损耗/100);
		}
	)
}

BEGIN:主材_不取费_运输重量_设备性材料
${
		sum(_过滤主材(),"主材",
			?#{
				->主材.拆分 == 0 && 主材.费用类型 == "不取费" && 主材.设备性材料==1
				:
				主材.单重*主材.数量*(1+主材.损耗/100)*(1+主材.毛重/100)/1000;
				->主材.拆分 == 1
				:
				sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.单重*拆分子项.数量*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)/1000) + 
				sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.单重*拆分子项.数量*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)/1000);
			}
		)
}

BEGIN:主材_不取费_运输费用_设备性材料
${
	#{
		->@工程信息.专业类型=="送电"
		:
		sum(_过滤主材(),"主材",
			?#{
				->主材.拆分 == 0 && 主材.费用类型 == "不取费" && 主材.设备性材料==1
				:
				主材.单重/1000*主材.数量*主材.运输单价*(1+主材.损耗/100)*(1+主材.毛重/100);
				->主材.拆分 == 1
				:
				sum(filter(_过滤甲供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.单重/1000*拆分子项.数量*拆分子项.运输单价*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)) + 
				sum(filter(_过滤乙供不取费主材(),"拆分子项",?拆分子项.设备性材料==1),"拆分子项",?拆分子项.单重/1000*拆分子项.数量*拆分子项.运输单价*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100));
			}
		);
	}
}

///////////////////////////////////////////////////////////////
//
//  设备
//
///////////////////////////////////////////////////////////////
BEGIN:设备_主要设备_甲供设备费不含税
${
	sum(_过滤甲供主要设备(),"设备",?设备.单价不含税*设备.数量)
}

BEGIN:设备_主要设备_甲供设备费含税
${
	sum(_过滤甲供主要设备(),"设备",?设备.单价含税*设备.数量)
}

BEGIN:设备_主要设备_甲供设备运杂费
${
	sum(_过滤甲供主要设备(),"设备",?设备.单价含税*设备.数量*设备.运杂费率/100)
}

BEGIN:设备_主要设备_乙供设备费不含税
${
	sum(_过滤乙供主要设备(),"设备",?设备.单价不含税*设备.数量)
}
BEGIN:设备_主要设备_乙供设备费含税
${
	sum(_过滤乙供主要设备(),"设备",?设备.单价含税*设备.数量)
}
BEGIN:设备_主要设备_乙供设备运杂费
${
	sum(_过滤乙供主要设备(),"设备",?设备.单价含税*设备.数量*设备.运杂费率/100)
}

BEGIN:设备_主要设备_乙供设备税金
${
    sum(_过滤乙供主要设备(),"设备",?(设备.数量 * (设备.单价不含税 + 设备.单价含税 * 设备.运杂费率 / 100)) * @工程信息.工程税率/100)   
}

BEGIN:设备_普通设备_甲供设备费不含税
${
	sum(_过滤普通甲供设备(),"设备",?设备.数量 * 设备.单价不含税)+主材_取费_甲供主材费不含税_设备性材料()+主材_不取费_甲供主材费不含税_设备性材料()+主材_取费_甲供主材损耗费不含税_设备性材料()+主材_不取费_甲供主材损耗费不含税_设备性材料()+主材_取费_甲供主材价差不含税_设备性材料()+主材_不取费_甲供主材价差不含税_设备性材料()+主材_取费_甲供主材损耗价差不含税_设备性材料()+主材_不取费_甲供主材损耗价差不含税_设备性材料();
}

BEGIN:设备_普通设备_甲供设备费含税
${
	sum(_过滤普通甲供设备(),"设备",?设备.数量 * 设备.单价含税)+主材_取费_甲供主材费含税_设备性材料()+主材_不取费_甲供主材费含税_设备性材料()+主材_取费_甲供主材损耗费含税_设备性材料()+主材_不取费_甲供主材损耗费含税_设备性材料()+主材_取费_甲供主材价差含税_设备性材料()+主材_不取费_甲供主材价差含税_设备性材料()+主材_取费_甲供主材损耗价差含税_设备性材料()+主材_不取费_甲供主材损耗价差含税_设备性材料();
}

BEGIN:设备_普通设备_甲供设备运杂费
${
	sum(_过滤普通甲供设备(),"设备",?设备.数量 * 设备.单价含税 * 设备.运杂费率 / 100)
}

BEGIN:设备_普通设备_乙供设备费不含税
${
	sum(_过滤普通乙供设备(),"设备",?设备.数量 * 设备.单价不含税)+主材_取费_乙供主材费不含税_设备性材料()+主材_不取费_乙供主材费不含税_设备性材料()+主材_取费_乙供主材损耗费不含税_设备性材料()+主材_不取费_乙供主材损耗费不含税_设备性材料()+主材_取费_乙供主材价差不含税_设备性材料()+主材_不取费_乙供主材价差不含税_设备性材料()+主材_取费_乙供主材损耗价差不含税_设备性材料()+主材_不取费_乙供主材损耗价差不含税_设备性材料();
}
BEGIN:设备_普通设备_乙供设备费含税
${
	sum(_过滤普通乙供设备(),"设备",?设备.数量 * 设备.单价含税)+主材_取费_乙供主材费含税_设备性材料()+主材_不取费_乙供主材费含税_设备性材料()+主材_取费_乙供主材损耗费含税_设备性材料()+主材_不取费_乙供主材损耗费含税_设备性材料()+主材_取费_乙供主材价差含税_设备性材料()+主材_不取费_乙供主材价差含税_设备性材料()+主材_取费_乙供主材损耗价差含税_设备性材料()+主材_不取费_乙供主材损耗价差含税_设备性材料();
}
BEGIN:设备_普通设备_乙供设备运杂费
${
	sum(_过滤普通乙供设备(),"设备",?设备.数量 * 设备.单价含税 * 设备.运杂费率 / 100)
}

BEGIN:设备_普通设备_乙供设备税金
${
	(设备_普通设备_乙供设备费不含税()+设备_普通设备_乙供设备运杂费()) * @工程信息.工程税率/100;
}

BEGIN:甲供设备性材料损耗费
${
	主材_取费_甲供主材损耗费含税_设备性材料()+主材_取费_甲供主材损耗价差含税_设备性材料()+主材_不取费_甲供主材损耗费含税_设备性材料()+主材_不取费_甲供主材损耗价差含税_设备性材料();
}

BEGIN:乙供设备性材料损耗费
${
	主材_取费_乙供主材损耗费不含税_设备性材料()+主材_取费_乙供主材损耗价差不含税_设备性材料()+主材_不取费_乙供主材损耗费不含税_设备性材料()+主材_不取费_乙供主材损耗价差不含税_设备性材料();
}

///////////////////////////////////////////////////////////////
//
//  一笔性费用
//
///////////////////////////////////////////////////////////////
BEGIN:一笔性费用
${
    sum(_过滤一笔性费用(),"工程量",?工程量.数量 * 工程量.单价含税)
}

BEGIN:一笔性费用_不含税
${
    sum(_过滤一笔性费用(),"工程量",?工程量.数量 * 工程量.单价不含税)
}

BEGIN:余物清理一笔性费用
${
	#{
		->@工程信息.插件名称=="湖南智能化造价插件" && @工程信息.专业类型=="变电"
		:
		sum(_过滤一笔性费用(),"工程量",?工程量.数量 * 工程量.单价含税*parent.parent.费率/100);
		->
		:
		sum(_过滤一笔性费用(),"工程量",?工程量.数量 * 工程量.单价含税*parent.费率/100);
	}
}

///////////////////////////////////////////////////////////////
//
//  过滤函数
//
///////////////////////////////////////////////////////////////
BEGIN:_过滤一笔性费用
${
    filter(source,"工程量",?工程量.type =="一笔性费用" )
}

BEGIN:_过滤取费定额
${
    filter(source,"工程量",?工程量.type =="定额" && 工程量.费用类型=="取费")
}

BEGIN:_过滤不取费定额
${
    filter(source,"工程量",?工程量.type =="定额" && 工程量.费用类型=="不取费")
}

BEGIN:_过滤甲供材料
${
	filter(items,"人材机",?人材机.type == "消材" && 人材机.供货方 == "甲供")
}

BEGIN:_过滤乙供材料
${
	filter(items,"人材机",?人材机.type == "消材" && 人材机.供货方 == "乙供")
}

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

BEGIN:_过滤乙供取费主材
${
    filter(items,"子项",?子项.type == "主材" && 子项.供货方 == "乙供" && 子项.费用类型 == "取费")
}

BEGIN:_过滤甲供取费主材
${
    filter(items,"子项",?子项.type == "主材" && 子项.供货方 == "甲供" && 子项.费用类型 == "取费")
}

BEGIN:_过滤乙供不取费主材
${
    filter(items,"子项",?子项.type == "主材" && 子项.供货方 == "乙供" && 子项.费用类型 == "不取费")
}

BEGIN:_过滤甲供不取费主材
${
    filter(items,"子项",?子项.type == "主材" && 子项.供货方 == "甲供" && 子项.费用类型 == "不取费")
}

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

BEGIN:_过滤材料
${
    filter(items,"人材机",?人材机.type == "消材")
}

BEGIN:_过滤机械
${
	filter(items,"人材机",?人材机.type == "机械")
}

BEGIN:_过滤乙供子项
${
    filter(items,"子项",?子项.供货方 == "乙供")
}

BEGIN:_过滤甲供子项
${
    filter(items,"子项",?子项.供货方 == "甲供")
}

BEGIN:_过滤子项
${
    filter(items,"子项",?子项.type =="主材" )
}

BEGIN:_过滤机械子项
${
	filter(items,"子项",?子项.type == "机械"|| 子项.type == "人工" || 子项.type == "消材")
}

BEGIN:_过滤普通甲供设备
${
    filter(source,"工程量",?工程量.type =="设备" && 工程量.供货方 == "甲供" && 工程量.设备类型 == "普通设备")
}

BEGIN:_过滤普通乙供设备
${
    filter(source,"工程量",?工程量.type =="设备" && 工程量.供货方 == "乙供" && 工程量.设备类型 == "普通设备")
}

BEGIN:_过滤甲供主要设备
${
	filter(source,"工程量",?工程量.type =="设备"  && 工程量.设备类型 =="主要设备" && 工程量.供货方 == "甲供")
}

BEGIN:_过滤乙供主要设备
${
	filter(source,"工程量",?工程量.type =="设备"  && 工程量.设备类型 =="主要设备" && 工程量.供货方 == "乙供")
}

///////////////////////////////////////////////////////////////
//
//  监造主材
//
///////////////////////////////////////////////////////////////
BEGIN:主材_取费_监造_甲供主材费不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供"  && 主材.监造物料 == 1
			:
			主材.数量 * 主材.预算价不含税;
			->主材.拆分 == 1
			:
			sum(_过滤监造甲供取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税);
		}
	)
}

BEGIN:主材_取费_监造_甲供主材费含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供"  && 主材.监造物料 == 1
			:
			主材.数量 * 主材.预算价含税;
			->主材.拆分 == 1
			:
			sum(_过滤监造甲供取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税);
		}
	)
}

BEGIN:主材_取费_监造_甲供主材损耗费不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供"  && 主材.监造物料 == 1
			:
			主材.数量 * 主材.预算价不含税 * 主材.损耗 /100;
			->主材.拆分 == 1
			:
			sum(_过滤监造甲供取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税 * 拆分子项.损耗 /100);	
		}
	)
}

BEGIN:主材_取费_监造_甲供主材损耗费含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供"  && 主材.监造物料 == 1
			:
			主材.数量 * 主材.预算价含税 * 主材.损耗 /100;
			->主材.拆分 == 1
			:
			sum(_过滤监造甲供取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税 * 拆分子项.损耗 /100);	
		}
	)
}

BEGIN:主材_取费_监造_甲供主材价差不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供"  && 主材.监造物料 == 1
			:
			主材.数量 * (主材.市场价不含税-主材.预算价不含税);
			->主材.拆分 == 1
			:
			sum(_过滤监造甲供取费主材(),"拆分子项",?拆分子项.数量 * (拆分子项.市场价不含税-拆分子项.预算价不含税));
		}
	)
}

BEGIN:主材_取费_监造_甲供主材价差含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供"  && 主材.监造物料 == 1
			:
			主材.数量 * (主材.市场价含税-主材.预算价含税);
			->主材.拆分 == 1
			:
			sum(_过滤监造甲供取费主材(),"拆分子项",?拆分子项.数量 * (拆分子项.市场价含税-拆分子项.预算价含税));
		}
	)
}

BEGIN:主材_取费_监造_甲供主材损耗价差不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供"  && 主材.监造物料 == 1
			:
			主材.数量 * (主材.市场价不含税-主材.预算价不含税) * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(_过滤监造甲供取费主材(),"拆分子项",?拆分子项.数量 * (拆分子项.市场价不含税-拆分子项.预算价不含税) * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_取费_监造_甲供主材损耗价差含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "甲供"  && 主材.监造物料 == 1
			:
			主材.数量 * (主材.市场价含税-主材.预算价含税) * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(_过滤监造甲供取费主材(),"拆分子项",?拆分子项.数量 * (拆分子项.市场价含税-拆分子项.预算价含税) * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_取费_监造_乙供主材费不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供"  && 主材.监造物料 == 1
			:
			主材.数量 * 主材.预算价不含税;
			->主材.拆分 == 1
			:
			sum(_过滤监造乙供取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税);
		}
	)
}
BEGIN:主材_取费_监造_乙供主材费含税
${
	sum(_过滤监造主材(),"主材",
		?#{ 
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供"  && 主材.监造物料 == 1
			:
			主材.数量 * 主材.预算价含税;
			->主材.拆分 == 1
			:
			sum(_过滤监造乙供取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税);
		}
	)
}
BEGIN:主材_取费_监造_乙供主材损耗费不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供"  && 主材.监造物料 == 1
			:
			主材.数量 * 主材.预算价不含税 * 主材.损耗 /100;
			->主材.拆分 == 1
			:
			sum(_过滤监造乙供取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税 * 拆分子项.损耗 /100);	
		}
	)
}
BEGIN:主材_取费_监造_乙供主材损耗费含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供"  && 主材.监造物料 == 1
			:
			主材.数量 * 主材.预算价含税 * 主材.损耗 /100;
			->主材.拆分 == 1
			:
			sum(_过滤监造乙供取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税 * 拆分子项.损耗 /100);	
		}
	)
}
BEGIN:主材_取费_监造_乙供主材价差不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供"  && 主材.监造物料 == 1
			:
			主材.数量 * (主材.市场价不含税-主材.预算价不含税);
			->主材.拆分 == 1
			:
			sum(_过滤监造乙供取费主材(),"拆分子项",?拆分子项.数量 * (拆分子项.市场价不含税-拆分子项.预算价不含税));
		}
	)
}

BEGIN:主材_取费_监造_乙供主材价差含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供"  && 主材.监造物料 == 1
			:
			主材.数量 * (主材.市场价含税-主材.预算价含税);
			->主材.拆分 == 1
			:
			sum(_过滤监造乙供取费主材(),"拆分子项",?拆分子项.数量 * (拆分子项.市场价含税-拆分子项.预算价含税));
		}
	)
}

BEGIN:主材_取费_监造_乙供主材损耗价差不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.费用类型 == "取费" && 主材.供货方 == "乙供"  && 主材.监造物料 == 1
			:
			主材.数量 * (主材.市场价不含税-主材.预算价不含税) * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(_过滤监造乙供取费主材(),"拆分子项",?拆分子项.数量 * (拆分子项.市场价不含税-拆分子项.预算价不含税) * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_取费_监造_运输重量
${
		sum(_过滤监造主材(),"主材",
			?#{
				->主材.拆分 == 0 && 主材.费用类型 == "取费"  && 主材.监造物料 == 1
				:
				主材.单重*主材.数量*(1+主材.损耗/100)*(1+主材.毛重/100)/1000;
				->主材.拆分 == 1
				:
				sum(_过滤监造甲供取费主材(),"拆分子项",?拆分子项.单重*拆分子项.数量*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)/1000) + 
				sum(_过滤监造乙供取费主材(),"拆分子项",?拆分子项.单重*拆分子项.数量*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)/1000);
			}
		)
}

BEGIN:主材_取费_监造_运输费用
${
	#{
		->@工程信息.专业类型=="送电"
		:
		sum(_过滤监造主材(),"主材",
			?#{
				->主材.拆分 == 0 && 主材.费用类型 == "取费"  && 主材.监造物料 == 1
				:
				主材.单重/1000*主材.数量*主材.运输单价*(1+主材.损耗/100)*(1+主材.毛重/100);
				->主材.拆分 == 1
				:
				sum(_过滤监造甲供取费主材(),"拆分子项",?拆分子项.单重/1000*拆分子项.数量*拆分子项.运输单价*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)) + 
				sum(_过滤监造乙供取费主材(),"拆分子项",?拆分子项.单重/1000*拆分子项.数量*拆分子项.运输单价*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100));
			}
		);
	}
}

BEGIN:主材_不取费_监造_甲供主材费不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
			   主材.预算价不含税 * 主材.数量;
			->主材.拆分 == 1
			:
			sum(_过滤监造甲供不取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税);
		}
	)
}
 
BEGIN:主材_不取费_监造_甲供主材费含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
		    主材.预算价含税 * 主材.数量;
			->主材.拆分 == 1
	        :
			sum(_过滤监造甲供不取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税);
		}
	)
}
 
BEGIN:主材_不取费_监造_甲供主材损耗费不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
			主材.预算价不含税*主材.数量 * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(_过滤监造甲供不取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税 * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_不取费_监造_甲供主材损耗费含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
			主材.预算价含税 * 主材.数量 * 主材.损耗 / 100;
			->主材.拆分 == 1
			:
			sum(_过滤监造甲供不取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税 * 拆分子项.损耗 / 100);
		}
	)
}

BEGIN:主材_不取费_监造_甲供主材价差不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
			(主材.市场价不含税-主材.预算价不含税)*主材.数量;
			->主材.拆分 == 1
			:
			sum(_过滤监造甲供不取费主材(),"拆分子项",?(拆分子项.市场价不含税-拆分子项.预算价不含税)*拆分子项.数量);
		}
	)
}

BEGIN:主材_不取费_监造_甲供主材价差含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
		    (主材.市场价含税-主材.预算价含税)*主材.数量;
			->主材.拆分 == 1
	        :
			sum(_过滤监造甲供不取费主材(),"拆分子项",?(拆分子项.市场价含税-拆分子项.预算价含税)*拆分子项.数量);
		}
	)
}

BEGIN:主材_不取费_监造_甲供主材损耗价差不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
		    (主材.市场价不含税-主材.预算价不含税)*主材.数量*主材.损耗/100;
			->主材.拆分 == 1
	        :
			sum(_过滤监造甲供不取费主材(),"拆分子项",?(拆分子项.市场价不含税-拆分子项.预算价不含税)*拆分子项.数量*拆分子项.损耗/100);
		}
	)
}

BEGIN:主材_不取费_监造_甲供主材损耗价差含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "甲供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
		    (主材.市场价含税-主材.预算价含税)*主材.数量*主材.损耗/100;
			->主材.拆分 == 1
	        :
			sum(_过滤监造甲供不取费主材(),"拆分子项",?(拆分子项.市场价含税-拆分子项.预算价含税)*拆分子项.数量*拆分子项.损耗/100);
		}
	)
}

BEGIN:主材_不取费_监造_乙供主材费不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
		    主材.预算价不含税*主材.数量;
			->主材.拆分 == 1
	        :
			sum(_过滤监造乙供不取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税);
		}
	)
}
BEGIN:主材_不取费_监造_乙供主材费含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
		    主材.预算价含税*主材.数量;
			->主材.拆分 == 1
	        :
			sum(_过滤监造乙供不取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税);
		}
	)
}
BEGIN:主材_不取费_监造_乙供主材损耗费不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
		    主材.预算价不含税*主材.数量*主材.损耗/100;
			->主材.拆分 == 1
	        :
			sum(_过滤监造乙供不取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价不含税*拆分子项.损耗/100);
		}
	)
}
 BEGIN:主材_不取费_监造_乙供主材损耗费含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
		    主材.预算价含税*主材.数量*主材.损耗/100;
			->主材.拆分 == 1
	        :
			sum(_过滤监造乙供不取费主材(),"拆分子项",?拆分子项.数量 * 拆分子项.预算价含税*拆分子项.损耗/100);
		}
	)
} 
BEGIN:主材_不取费_监造_乙供主材价差不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
		    (主材.市场价不含税-主材.预算价不含税)*主材.数量;
			->主材.拆分 == 1
	        :
			sum(_过滤监造乙供不取费主材(),"拆分子项",?(拆分子项.市场价不含税-拆分子项.预算价不含税)*拆分子项.数量);
		}
	)
}

BEGIN:主材_不取费_监造_乙供主材价差含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
		    (主材.市场价含税-主材.预算价含税)*主材.数量;
			->主材.拆分 == 1
	        :
			sum(_过滤监造乙供不取费主材(),"拆分子项",?(拆分子项.市场价含税-拆分子项.预算价含税)*拆分子项.数量);
		}
	)
}

BEGIN:主材_不取费_监造_乙供主材损耗价差不含税
${
	sum(_过滤监造主材(),"主材",
		?#{
			->主材.拆分 == 0 && 主材.供货方 == "乙供" && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
			:
		    (主材.市场价不含税-主材.预算价不含税)*主材.数量*主材.损耗/100;
			->主材.拆分 == 1
	        :
			sum(_过滤监造乙供不取费主材(),"拆分子项",?(拆分子项.市场价不含税-拆分子项.预算价不含税)*拆分子项.数量*拆分子项.损耗/100);
		}
	)
}

BEGIN:主材_不取费_监造_运输重量
${
		sum(_过滤监造主材(),"主材",
			?#{
				->主材.拆分 == 0 && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
				:
				主材.单重*主材.数量*(1+主材.损耗/100)*(1+主材.毛重/100)/1000;
				->主材.拆分 == 1
				:
				sum(_过滤监造甲供不取费主材(),"拆分子项",?拆分子项.单重*拆分子项.数量*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)/1000) + 
				sum(_过滤监造乙供不取费主材(),"拆分子项",?拆分子项.单重*拆分子项.数量*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)/1000);
			}
		)
}

BEGIN:主材_不取费_监造_运输费用
${
	#{
		->@工程信息.专业类型=="送电"
		:
		sum(_过滤监造主材(),"主材",
			?#{
				->主材.拆分 == 0 && 主材.费用类型 == "不取费"  && 主材.监造物料 == 1
				:
				主材.单重/1000*主材.数量*主材.运输单价*(1+主材.损耗/100)*(1+主材.毛重/100);
				->主材.拆分 == 1
				:
				sum(_过滤监造甲供不取费主材(),"拆分子项",?拆分子项.单重/1000*拆分子项.数量*拆分子项.运输单价*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100)) + 
				sum(_过滤监造乙供不取费主材(),"拆分子项",?拆分子项.单重/1000*拆分子项.数量*拆分子项.运输单价*(1+拆分子项.损耗/100)*(1+拆分子项.毛重/100));
			}
		);
	}
}

///////////////////////////////////////////////////////////////
//
//  监造设备
//
///////////////////////////////////////////////////////////////
BEGIN:设备_主要设备_监造_甲供设备费不含税
${
	sum(_过滤监造甲供主要设备(),"设备",?设备.单价不含税*设备.数量)
}

BEGIN:设备_主要设备_监造_甲供设备费含税
${
	sum(_过滤监造甲供主要设备(),"设备",?设备.单价含税*设备.数量)
}

BEGIN:设备_主要设备_监造_甲供设备运杂费
${
	sum(_过滤监造甲供主要设备(),"设备",?设备.单价含税*设备.数量*设备.运杂费率/100)
}

BEGIN:设备_主要设备_监造_乙供设备费不含税
${
	sum(_过滤监造乙供主要设备(),"设备",?设备.单价不含税*设备.数量)
}
BEGIN:设备_主要设备_监造_乙供设备费含税
${
	sum(_过滤监造乙供主要设备(),"设备",?设备.单价含税*设备.数量)
}
BEGIN:设备_主要设备_监造_乙供设备运杂费
${
	sum(_过滤监造乙供主要设备(),"设备",?设备.单价含税*设备.数量*设备.运杂费率/100)
}

BEGIN:设备_主要设备_监造_乙供设备税金
${
    sum(_过滤监造乙供主要设备(),"设备",?(设备.数量 * (设备.单价不含税 + 设备.单价含税 * 设备.运杂费率 / 100)) * @工程信息.工程税率/100)   
}

BEGIN:设备_普通设备_监造_甲供设备费不含税
${
	sum(_过滤监造普通甲供设备(),"设备",?设备.数量 * 设备.单价不含税)
}

BEGIN:设备_普通设备_监造_甲供设备费含税
${
	sum(_过滤监造普通甲供设备(),"设备",?设备.数量 * 设备.单价含税)
}

BEGIN:设备_普通设备_监造_甲供设备运杂费
${
	sum(_过滤监造普通甲供设备(),"设备",?设备.数量 * 设备.单价含税 * 设备.运杂费率 / 100)
}

BEGIN:设备_普通设备_监造_乙供设备费不含税
${
	sum(_过滤监造普通乙供设备(),"设备",?设备.数量 * 设备.单价不含税)
}
BEGIN:设备_普通设备_监造_乙供设备费含税
${
	sum(_过滤监造普通乙供设备(),"设备",?设备.数量 * 设备.单价含税)
}
BEGIN:设备_普通设备_监造_乙供设备运杂费
${
	sum(_过滤监造普通乙供设备(),"设备",?设备.数量 * 设备.单价含税 * 设备.运杂费率 / 100)
}

BEGIN:设备_普通设备_监造_乙供设备税金
${
	sum(_过滤监造普通乙供设备(),"设备",?(设备.数量 * (设备.单价不含税 + 设备.单价含税 * 设备.运杂费率 / 100)) * @工程信息.工程税率/100)
}
///////////////////////////////////////////////////////////////
//
//  监造主材设备过滤函数
//
///////////////////////////////////////////////////////////////
BEGIN:_过滤监造主材
${
    filter(source,"工程量",?工程量.type =="主材")
}

BEGIN:_过滤监造乙供取费主材
${
    filter(filter(items,"子项",?子项.type == "主材" && 子项.供货方 == "乙供" && 子项.费用类型 == "取费"),"拆分子项",?拆分子项.监造物料==1)
}

BEGIN:_过滤监造甲供取费主材
${
    filter(filter(items,"子项",?子项.type == "主材" && 子项.供货方 == "甲供" && 子项.费用类型 == "取费"),"拆分子项",?拆分子项.监造物料==1)
}

BEGIN:_过滤监造乙供不取费主材
${
    filter(filter(items,"子项",?子项.type == "主材" && 子项.供货方 == "乙供" && 子项.费用类型 == "不取费"),"拆分子项",?拆分子项.监造物料==1)
}

BEGIN:_过滤监造甲供不取费主材
${
    filter(filter(items,"子项",?子项.type == "主材" && 子项.供货方 == "甲供" && 子项.费用类型 == "不取费"),"拆分子项",?拆分子项.监造物料==1)
}

BEGIN:_过滤监造普通甲供设备
${
    filter(source,"工程量",?工程量.type =="设备" && 工程量.供货方 == "甲供" && 工程量.设备类型 == "普通设备" && 工程量.监造物料 == 1)
}

BEGIN:_过滤监造普通乙供设备
${
    filter(source,"工程量",?工程量.type =="设备" && 工程量.供货方 == "乙供" && 工程量.设备类型 == "普通设备" && 工程量.监造物料 == 1)
}

BEGIN:_过滤监造甲供主要设备
${
	filter(source,"工程量",?工程量.type =="设备"  && 工程量.设备类型 =="主要设备" && 工程量.供货方 == "甲供" && 工程量.监造物料 == 1)
}

BEGIN:_过滤监造乙供主要设备
${
	filter(source,"工程量",?工程量.type =="设备"  && 工程量.设备类型 =="主要设备" && 工程量.供货方 == "乙供" && 工程量.监造物料 == 1)
}

///////////////////////////////////////////////////////////////
//
//  报表用
//
///////////////////////////////////////////////////////////////
BEGIN:甲供设备含税
${
	?设备_主要设备_甲供设备费含税() + 设备_普通设备_甲供设备费含税()
}
BEGIN:甲供设备不含税
${
	?设备_主要设备_甲供设备费不含税() + 设备_普通设备_甲供设备费不含税()
}
BEGIN:甲供设备运杂费
${
	?设备_主要设备_甲供设备运杂费() + 设备_普通设备_甲供设备运杂费()
}
BEGIN:乙供设备含税
${
	?设备_主要设备_乙供设备费含税() + 设备_普通设备_乙供设备费含税()
}
BEGIN:乙供设备不含税
${
	?设备_主要设备_乙供设备费不含税() + 设备_普通设备_乙供设备费不含税()
}

BEGIN:乙供设备运杂费
${
	?设备_主要设备_乙供设备运杂费() + 设备_普通设备_乙供设备运杂费()
}
BEGIN:甲供主材含税
${
	?主材_取费_甲供主材费含税() + 主材_取费_甲供主材损耗费含税()+主材_不取费_甲供主材费含税() + 主材_不取费_甲供主材损耗费含税()
}
BEGIN:甲供主材不含税
${
	?主材_取费_甲供主材费不含税() + 主材_取费_甲供主材损耗费不含税()+主材_不取费_甲供主材费不含税() + 主材_不取费_甲供主材损耗费不含税()
}
BEGIN:乙供主材含税
${
	?主材_取费_乙供主材费含税() + 主材_取费_乙供主材损耗费含税()+主材_不取费_乙供主材费含税() + 主材_不取费_乙供主材损耗费含税()
}
BEGIN:乙供主材不含税
${
	?主材_取费_乙供主材费不含税() + 主材_取费_乙供主材损耗费不含税()+主材_不取费_乙供主材费不含税() + 主材_不取费_乙供主材损耗费不含税()
}
BEGIN:混凝土施工调整人工费
${
	?定额_取费_混凝土施工调整人工费()+定额_不取费_混凝土施工调整人工费()
}

BEGIN:混凝土施工调整材料费
${
	?定额_取费_混凝土施工调整材料费()+定额_不取费_混凝土施工调整材料费()
}

BEGIN:混凝土施工调整机械费
${
	?定额_取费_混凝土施工调整机械费()+定额_不取费_混凝土施工调整机械费()
}

BEGIN:调试人工费
${
	?定额_取费_调试人工费()+定额_不取费_调试人工费()
}

BEGIN:调试材料费
${
	?定额_取费_调试材料费()+定额_不取费_调试材料费()
}

BEGIN:调试机械费
${
	?定额_取费_调试机械费()+定额_不取费_调试机械费()
}


BEGIN:定额人工费
${
	?定额_取费_人工费() + 定额_取费_脚手架人工费() + 定额_取费_混凝土施工调整人工费() + 定额_取费_调试人工费() + 定额_取费_地形人工费() + 
	定额_不取费_人工费() + 定额_不取费_脚手架人工费() + 定额_不取费_混凝土施工调整人工费() + 定额_不取费_调试人工费() + 定额_不取费_地形人工费()
}

BEGIN:定额甲供材料费含税
${
	?定额_取费_甲供材料费含税() + 定额_不取费_甲供材料费含税()
}
BEGIN:定额甲供材料费不含税
${
	?定额_取费_甲供材料费不含税() + 定额_不取费_甲供材料费不含税()
}
BEGIN:定额乙供材料费含税
${
	?定额_取费_乙供材料费含税() + 定额_不取费_乙供材料费含税() 
}
BEGIN:定额乙供材料费不含税
${
	?定额_取费_乙供材料费不含税() + 定额_取费_脚手架材料费() + 定额_取费_混凝土施工调整材料费() + 定额_取费_调试材料费() + 
	定额_不取费_乙供材料费不含税() + 定额_不取费_脚手架材料费() + 定额_不取费_混凝土施工调整材料费() + 定额_不取费_调试材料费()
}

BEGIN:定额机械费
${
	?定额_取费_机械费() + 定额_取费_脚手架机械费() + 定额_取费_混凝土施工调整机械费() + 定额_取费_调试机械费() + 定额_取费_地形机械费() + 
	定额_不取费_机械费() + 定额_不取费_脚手架机械费() + 定额_不取费_混凝土施工调整机械费() + 定额_不取费_调试机械费() + 定额_不取费_地形机械费()
}