# -*- coding: utf-8 -*-
"""向修订版合同追加修订后的附件（施工标准清单/材料清单/费用范围/主材报价单）"""
from docx import Document
from docx.shared import Pt, Cm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH, WD_LINE_SPACING
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import OxmlElement

F='/home/zyw/Downloads/dl-hub/26-合同审查/农村自建房施工合同（修订版·对方底本）.docx'
doc=Document(F)
BODY='宋体'; HEAD='黑体'; RED=RGBColor(0xC0,0x00,0x00); GRAY=RGBColor(0x60,0x60,0x60); B='＿＿＿＿＿＿'

def sf(r,n=BODY,s=10.5,b=False,c=None):
    r.font.name=n; r.font.size=Pt(s); r.bold=b
    r._element.rPr.rFonts.set(qn('w:eastAsia'),n)
    if c: r.font.color.rgb=c
def P(t='',s=10.5,b=False,al='left',ind=0.0,fl=0.0,f=BODY,sb=0,sa=2,c=None):
    p=doc.add_paragraph(); pf=p.paragraph_format
    pf.left_indent=Cm(ind); pf.first_line_indent=Cm(fl); pf.space_before=Pt(sb); pf.space_after=Pt(sa)
    p.alignment={'left':WD_ALIGN_PARAGRAPH.LEFT,'center':WD_ALIGN_PARAGRAPH.CENTER}[al]
    for i,seg in enumerate(t.split('**')):
        if seg: sf(p.add_run(seg),f,s,b or i%2==1,c)
    return p
def TAG(t):
    p=doc.add_paragraph(); p.paragraph_format.space_before=Pt(2); p.paragraph_format.space_after=Pt(1)
    sf(p.add_run(t),HEAD,9,True,RED)
def H2(t): P(t,12,True,f=HEAD,sb=10,sa=4)
def TBL(rows,widths=None,size=8.5,hdr=1):
    t=doc.add_table(rows=0,cols=len(rows[0])); t.style='Table Grid'; t.alignment=WD_TABLE_ALIGNMENT.CENTER
    for ri,row in enumerate(rows):
        cells=t.add_row().cells
        for ci,txt in enumerate(row):
            cells[ci].text=''; p=cells[ci].paragraphs[0]
            p.paragraph_format.space_before=Pt(1); p.paragraph_format.space_after=Pt(1)
            p.paragraph_format.line_spacing=1.10
            for i,seg in enumerate(str(txt).split('**')):
                if seg: sf(p.add_run(seg),BODY,size,(ri<hdr) or i%2==1)
    if widths:
        for r in t.rows:
            for ci,w in enumerate(widths): r.cells[ci].width=Cm(w)
    return t

doc.add_page_break()
H2('附件：施工标准及材料清单')
P('（本附件由双方在签约时逐项确认并签字）',9.5,al='center',c=GRAY,sa=6)

# ---------- 附件一 ----------
H2('附件一　施工标准清单')
TAG('〔修订〕① 删除原表头中的"简越"字号（不再体现单方主体）；② 删除"初稿"字样；③ "三层砖混"改为"两层砖混"；'
    '④ 修正表内自相矛盾与措辞不当之处（见各条标注）')
P('适用范围：**两层砖混结构农村自住住房**；结构安全内容以正式施工图、地勘结果和属地主管部门要求为准。',9.5,c=GRAY)
P('列：序号｜阶段｜项目｜施工标准/施工内容｜规格参数｜验收/备注',9,al='center',c=GRAY)

rows=[['序号','阶段','项目','施工标准/施工内容','规格参数','验收/备注']]
data = [
 (1,'基础','基槽开挖','按施工图放线开挖，做好排水、边坡防护、基底清理，不得扰动持力层。','暂按正负零以下1.5m','如加深至1.5m以上，增加土方、砌体、混凝土等费用另行签证。'),
 (2,'基础','承台/条基','Ф14钢筋，间距20cm，C30混凝土浇筑，钢筋保护层、搭接、锚固按结构图施工。','800×300mm（**以设计确认为准**）','结构尺寸和配筋须由设计复核。'),
 (3,'基础','条形基础','混凝土现浇，做法以施工图为准。','**以施工图为准**','**〔修订〕**原"基础砌体／混凝土现浇一体成型"自相矛盾（砌体与现浇互相排斥），现统一为"以施工图为准"。'),
 (4,'基础','构造柱','构造柱与墙体采用马牙槎和拉结筋连接，C30混凝土浇筑。','240×240mm，4Ф14，箍筋@20cm','构造柱位置、间距按抗震构造图纸。'),
 (5,'基础','地梁/地圈梁','钢筋绑扎、模板支设、混凝土浇筑按结构图施工，并与构造柱可靠连接。','4Ф16，箍筋@20cm，C30（**截面尺寸以施工图为准**）','**〔修订〕**删除"原清单240×30mm疑似笔误"的自认表述，改为以施工图为准。'),
 (6,'基础','防潮','地面硬化后铺设丙纶防水一层，基础墙顶**应**同步设置防潮层。','丙纶防水一层','温江气候湿润，防潮节点应重点验收。'),
 (7,'基础','地面硬化','基层夯实找平后浇筑C25混凝土。','厚**60mm**','**〔修订〕**原为 50mm，与材料清单第2项"室内地坪硬化 厚度60mm"冲突，现统一为 60mm。'),
 (8,'一层主体','砌砖','红砖24墙，砂浆饱满，墙体垂直平整，承重墙不得随意开横槽。','层高**3.6m**','**〔修订〕**原为 3.9m，与合同第三条"一层3.6m"冲突，现统一为 3.6m。'),
 (9,'一层主体','构造柱','马牙槎工艺，4Ф14钢筋，箍筋20cm，C30混凝土。','4Ф14，箍筋@20cm','浇筑前检查钢筋、拉结筋和模板。'),
 (10,'一层主体','门头柱','门头柱按结构图施工，钢筋、箍筋、混凝土强度满足设计要求。','500×500mm，8Ф16，箍筋@20cm，C30','门头柱属重要受力构件，必须按图施工。'),
 (11,'一层主体','框架梁','梁钢筋、箍筋加密区、支座锚固按结构图施工。','240×600mm，5Ф22，箍筋@20cm，加密区@10cm','梁跨和洞口位置须由设计确认。'),
 (12,'一层主体','圈梁','圈梁连续设置，钢筋绑扎、搭接、锚固按抗震构造要求施工。','4Ф14，箍筋@20cm，加密区@10cm','与构造柱可靠连接。'),
 (13,'一层主体','楼梯','楼梯板筋、梯梁钢筋按图绑扎，C30混凝土浇筑。','Ф10@10cm，梯梁4Ф14','模板支撑牢固，踏步尺寸一致。'),
 (14,'一层主体','楼板','现浇楼板钢筋双层双向绑扎，管线预埋提前定位，C30混凝土浇筑。','Ф8双层双向@20cm，厚100mm','不得后期开槽破坏板筋。'),
 (15,'一层主体','抹灰','基层处理后用河砂水泥砂浆抹墙，阴阳角顺直，表面平整。','2m靠尺检查','控制空鼓、开裂和垂直度。'),
 (16,'二层主体','砌砖','红砖24墙，砂浆饱满，墙体垂直平整。','层高**3.3m**','**〔修订〕**原为 3.6m，与合同第三条"二层3.3m"冲突，现统一为 3.3m。'),
 (17,'二层主体','构造柱','马牙槎工艺，4Ф14钢筋，箍筋20cm，C30混凝土。','4Ф14，箍筋@20cm','按结构图布置。'),
 (18,'二层主体','悬空梁','悬挑或悬空梁重点复核支座锚固、箍筋加密和模板支撑。','240×600mm，5Ф22，箍筋@20cm，加密区@10cm','不得凭经验变更梁截面和配筋。'),
 (19,'二层主体','圈梁','圈梁连续设置，与构造柱可靠连接。','4Ф14，箍筋@20cm，加密区@10cm','按抗震构造要求施工。'),
 (20,'二层主体','楼板','现浇楼板钢筋双层双向绑扎，C30混凝土浇筑。','Ф8双层双向@20cm，厚100mm','管线预埋不得削弱板筋。'),
 (21,'二层主体','抹灰','河砂水泥砂浆抹墙，控制平整度、垂直度和空鼓。','2m靠尺检查','养护到位。'),
 (22,'屋面层','砌砖','红砖24墙，砂浆饱满，墙体垂直平整。','层高**0.6m**（顶面围墙）','**〔修订〕**原列为"三层主体"，与本工程"2 层"及合同第三条"顶面围墙高度不超过60cm"不符，现改列"屋面层"并注明为顶面围墙。'),
 (23,'屋面层','构造柱','马牙槎工艺，4Ф14钢筋，箍筋20cm，C30混凝土。','4Ф14，箍筋@20cm','按结构图布置。'),
 (24,'屋面层','圈梁','圈梁连续设置，与构造柱可靠连接。','4Ф14，箍筋@20cm，加密区@10cm','按抗震构造要求施工。'),
 (25,'屋面层','抹灰','河砂水泥砂浆抹墙，控制平整度、垂直度和空鼓。','2m靠尺检查','养护到位。'),
 (26,'屋面','天沟','天沟与外檐造型同步施工，做好找坡、雨水口、滴水线和节点处理。','Ф8双层双向@20cm，C30，厚100mm','天沟与屋面交接处加做防水附加层；**外檐造型另有约定的从其约定**。'),
 (27,'屋面','沥青防水','基层清理、阴阳角圆弧、附加层、铺贴搭接、收头密封按防水规范施工。','**3.0mm** 改性沥青卷材','**〔修订〕**原为 2.0mm，与材料清单第17项"3.0mm SBS/改性沥青卷材"冲突，现统一为 3.0mm；温江多雨，应按屋面防水设计年限配置，优先两道设防。'),
 (28,'屋面','防水保护层','防水验收合格后做水泥砂浆保护层，设置分格缝，避免破坏卷材。','厚30mm','完成后做蓄水或淋水试验。'),
 (29,'乙方负责','设计图纸','提供户型图、效果图、建筑施工图、**结构施工图**、水电图。','成套图纸','**〔修订〕**原列为"赠送"，赠与在法律上可撤销；现改为属乙方义务（不另收费）。新增"结构施工图"。'),
 (30,'乙方负责','保险','办理自建房施工人员意外保险。','以保险单为准','**〔修订〕**原列为"赠送"，现改为属乙方义务；保额、保障期限、保障对象按合同第八条执行。'),
 (31,'乙方负责','化粪池','红砖砌筑，内壁防渗、防臭，设置检修口。','2.8m×1.2m×1.5m，含10m污水管','**〔修订〕**原列为"赠送"，现改为属乙方义务；超出10m 部分按《工程变更单》约定单价另行计价。'),
 (32,'管线','预埋管线','现浇板内线管预埋，强弱电分管分盒，卫生间110污水管接至化粪池，天沟雨水管接排水沟。','按水电图','严禁后期大面积凿板。'),
 (33,'水电','开槽','全屋墙面管线开槽，开槽后修补密实。','深约30mm','承重墙开槽范围应受控。'),
 (34,'水电','冷热水','卫生间、厨房冷热水管安装。','含材料','完工后做打压试验。'),
 (35,'水电','排水','地漏、马桶、洗脸盆、厨房洗菜盆排水安装。','含材料','做通水、通球和坡度检查。'),
 (36,'水电','强电','全屋开关插座、房间双控开关安装。','含材料','设置接地、漏保和回路分区。'),
 (37,'水电','弱电','一楼、二楼客厅网线接通。','含材料','与强电保持间距，便于后期维护。'),
 (38,'安全文明','施工安全','脚手架、临边洞口防护、临电保护、材料堆放和现场清洁按安全文明施工要求执行。','全过程','关键工序留影像资料。脚手架及支模架应采用合格钢管和扣件搭设，不得使用有严重锈蚀、弯曲、压扁及裂纹钢管和不合格安全网；应设置连墙件、扫地杆、水平杆及剪刀撑，立杆基础设置木垫板。'),
 (39,'竣工','验收归档','保存施工合同、图纸、材料合格证、隐蔽验收记录、混凝土/防水验收记录和竣工资料。','全过程资料','地基基础、主体封顶、屋面防水重点验收。资料应在竣工验收合格后 7 日内移交甲方。'),
]
rows += [list(map(str,r)) for r in data]
TBL(rows,widths=[1.0,1.7,1.6,5.6,3.0,5.6],size=7.8)
P()

# ---------- 附件二 ----------
doc.add_page_break()
H2('附件二　材料清单')
P('列出本工程主要材料、规格等级、使用部位及质量验收要求；实际品牌和数量按施工图、现场工程量和本合同约定执行。',9.5,c=GRAY)
TAG('〔修订〕① 第17项屋面防水卷材与施工标准清单第27项统一为 3.0mm；② 删除"建议补列"等非义务性措辞；'
    '③ 补充材料进场验收与不合格材料处理')
mat=[['序号','材料类别','规格/等级','使用部位','质量要求/验收'],
 ['1','商品混凝土','C30','承台、构造柱、梁、圈梁、楼板、楼梯、天沟','优先使用正规搅拌站混凝土，留置试块或按当地要求验收。'],
 ['2','混凝土','C25','室内地坪硬化','厚度60mm，基层夯实找平。'],
 ['3','垫层混凝土','C25或按设计','基础垫层（如设计设置）','**如设计设置垫层，应按设计施工**；便于基础找平和保护钢筋。'],
 ['4','钢筋','Ф8','楼板、天沟','应有合格证、炉批号，必要时复检。'],
 ['5','钢筋','Ф10','楼梯板筋','间距和锚固按图纸。'],
 ['6','钢筋','Ф14','构造柱、圈梁、楼梯梁','搭接、弯钩和保护层按结构图。'],
 ['7','钢筋','Ф16','地梁、门头柱','重点检查主筋数量和锚固。'],
 ['8','钢筋','Ф22','框架梁、悬空梁','梁主筋不得擅自代换。'],
 ['9','箍筋/拉结筋','按结构图','梁、柱、墙体拉结','箍筋加密区和拉结筋间距按抗震构造要求。'],
 ['10','砌体材料','红砖或合格墙材','基础墙、主体墙、化粪池','强度等级按设计，破损、风化材料不得使用。'],
 ['11','砌筑砂浆','M5/M7.5/M10按设计','基础和主体砌筑','配合比明确，灰缝饱满。'],
 ['12','抹灰砂浆','水泥砂浆','内外墙抹灰','河砂过筛，基层处理，防空鼓开裂。'],
 ['13','水泥','国标水泥，P.O 42.5或按设计','砂浆、零星混凝土、防水保护层','有出厂合格证，受潮结块不得使用。'],
 ['14','砂','河砂/中砂','砌筑砂浆、抹灰砂浆','控制含泥量，清理杂物。'],
 ['15','碎石','5-25mm级配碎石','混凝土施工','干净、级配合理。'],
 ['16','防潮材料','丙纶防水卷材','基础和地坪防潮','搭接密实，与基层粘结牢固。'],
 ['17','屋面防水材料','**3.0mm** SBS/改性沥青卷材','屋面、天沟','**〔修订〕**与施工标准清单第27项原为 2.0mm 相冲突，现统一为 3.0mm。配套基层处理剂、密封膏，附加层齐全。'],
 ['18','防水保护层材料','水泥砂浆','屋面防水保护层','厚30mm，设置分格缝。'],
 ['19','给水管','PPR冷热水管','厨房、卫生间','热水管、冷水管分色或标识，做压力试验。'],
 ['20','排水管','PVC-U DN50/DN75/DN110','地漏、洁具、厨房、化粪池排水','坡度正确，做通水、通球试验。'],
 ['21','雨水管','PVC-U雨水管','天沟至排水沟','管卡牢固，出口顺畅。'],
 ['22','电线','国标BV/BVR 2.5/4/6mm² 按回路','照明、插座、空调、厨房卫生间','国标线，回路分区，漏保齐全。'],
 ['23','穿线管','阻燃PVC线管','墙体、楼板预埋','强弱电分管，弯头顺畅。'],
 ['24','弱电材料','六类网线、弱电箱、线管','一楼、二楼客厅网络','与强电保持间距，便于维护。'],
 ['25','化粪池材料','红砖、水泥砂浆、盖板、防水砂浆','化粪池','内壁防渗，设检修口和通气措施。'],
 ['26','模板材料','模板、方木、支撑','梁、柱、板、楼梯浇筑','模板支撑稳固，拆模时间符合要求。'],
 ['27','安全文明材料','脚手架、安全网、临电箱','施工安全防护','脚手架、临电和临边防护满足安全要求。'],
]
TBL(mat,widths=[1.0,2.4,3.4,3.6,6.5],size=8.0)
P('**材料进场验收：**乙方采购的全部材料应符合本清单约定的规格、等级，并提供出厂合格证、检测报告；'
  '材料进场应经甲方书面（含微信）验收确认后方可使用。不合格材料乙方应无条件退场，费用由乙方承担。',9.5)

# ---------- 附件三 ----------
doc.add_page_break()
H2('附件三　费用范围')
TAG('〔修订〕原表把"外墙装饰造型、门窗、室内装修"列为"包含"，与合同第四条"不包含造型装饰"直接冲突；'
    '现按合同第四条修正，并补列"外墙装饰造型"为另计项')
fe=[['费用类别','内容'],
 ['**包含**','材料、人工、交通、生活、设计、保险。'],
 ['**包含**','基础、主体、屋面防水、抹灰、管线预埋、化粪池、水电安装人工。'],
 ['**包含**','门窗、室内基础装修（**不含吊顶造型与装饰造型**）。'],
 ['**包含**','水电主材、洁具、灯具。'],
 ['**另计**','基础加深、地基处理、设计变更、现场签证增加工程量。'],
 ['**另计**','**外墙装饰造型、真石漆、艺术涂料、文化石等升级项目。**'],
]
TBL(fe,widths=[3.2,14.0],size=9.0)
P()
P('说明：本表与合同第四条不一致的，以合同第四条为准；本表"另计"项目须按合同第五条第 5.4 项'
  '签署书面《工程变更单》后方可计价。',9.5,c=GRAY)

# ---------- 附件四 ----------
H2('附件四　主材报价单')
TAG('〔修订〕① 原表章节编号为"一、二、四、五、六"，缺"三、"整节，签约前须由双方补齐或确认无该节；'
    '② 原价格栏全部空白，现明确填写要求；③ 原表"负一层/负二层"条目与 2 层房型不符，须由双方确认是否为笔误')
P('客户姓名：'+B+'　客户电话：'+B+'　客户地址：'+B+'　设计师：'+B+'　日期：'+B,9.5)
mr=[['序号','类别','产品','尺寸/规格','型号/编号','单位','备注'],
 ['','**一、门类**','','','','',''],
 ['1','','实木门','标准：','品牌：顾阳门业　型号：实木免漆　色号：　玻璃：','樘','烤漆门每樘增加350/扇。标配静音锁'],
 ['2','','卫生间钛合金门','标准：','品牌：顾阳门业　型号：实木免漆　色号：　玻璃：','樘','35*1.6极窄长虹超白玻'],
 ['3','','入户单边实木门套','标准：','品牌：顾阳门业　型号：实木免漆　色号：　玻璃：','m','实木免漆门套'],
 ['4','','阳台门套','标准：','品牌：顾阳门业　型号：实木免漆　色号：　玻璃：','m','实木免漆门套'],
 ['','小计','','','','',''],
 ['','**二、瓷砖·石材类**','','','','',''],
 ['1','','一二楼客厅地砖','标准：800*800','品牌：鹰派瓷砖　型号：EDGB09DE','片','指定型号'],
 ['2','','一二楼地砖（**原表作"负一二楼地砖"**）','标准：800*800','品牌：鹰派瓷砖　型号：**待确认**','片','**〔修订〕**原表型号栏为空，且"负一二楼"与 2 层房型不符，须双方确认'],
 ['3','','一二层卫生间墙砖','标准：400*800','品牌：鹰派瓷砖　型号：E4CA616RE','片','**〔修订〕**原表型号重复粘贴为"E4CA616REE4CA616RE"，现更正为 E4CA616RE，须双方确认'],
 ['4','','二层墙砖（**原表作"负二层墙砖"**）','标准：400*800','品牌：鹰派瓷砖　型号：**待确认**','片','**〔修订〕**"负二层"与 2 层房型不符，须双方确认'],
 ['5','','全屋踢脚线','实木踢脚线','品牌：**待确认**','m','实木60MM烤漆'],
 ['','小计','','','','',''],
 ['','**三、**（**原表缺失本节，须由双方补齐或确认无该节**）','','','','',''],
 ['','**四、洁具类**','','','','',''],
 ['1','','一楼定制浴室柜','标准：600*600','品牌：九牧或其他同价位品牌款式','套','含五金水龙头及下水'],
 ['2','','二楼主卫定制浴室柜','标准：600*600','品牌：九牧或其他同价位品牌款式','套','含五金水龙头及下水（暂定）'],
 ['3','','二楼次卧浴室柜','','','套','含五金水龙头及下水'],
 ['4','','主卫马桶','标准：','品牌：九牧　型号：**待确认**','套','不带灯·普通马桶'],
 ['5','','一楼厕所蹲便','标准：','品牌：九牧　型号：X14163-1/21K-1','套','蹲便水箱'],
 ['6','','二楼主卫淋浴隔断','','','㎡','根据实际尺寸计算'],
 ['','小计','','','','',''],
 ['','**五、乳胶漆类**','','','','',''],
 ['1','','墙面乳胶漆','标准：','品牌：立邦或多乐士','**桶**','市场价600-700元一桶（**〔修订〕**原单位作"套"，现更正为"桶"，须双方确认）'],
 ['2','','石膏腻子','','品牌：摩林美涂或303','**桶**','（**〔修订〕**原单位作"套"，现更正为"桶"，须双方确认）'],
 ['','**六、外立面装饰类**','','','','',''],
 ['1','','墙面乳胶漆','标准：','品牌：立邦或者多乐士','桶','可用真石漆（**如采用真石漆，应按附件三属"另计"项目，另行签订《工程变更单》**）'],
 ['2','','瓷砖','标准：400*800','品牌：以实际选款为主','㎡','（**〔修订〕**原单位作"套"，现更正为"㎡"，须双方确认）'],
 ['','小计','','','','',''],
 ['','合计','','','','',''],
 ['','A 主材直接费','','','','',''],
]
TBL(mr,widths=[0.9,2.6,2.4,1.9,4.6,1.1,3.7],size=7.6)
P()
P('**填写要求：**本报价单应在签约时一次填写完整（品牌、型号、规格、单价、数量、小计、合计）；'
  '**未填写且合同正文未明确为另计的项目，视为已包含在本合同价款内，乙方不得另行收费。**',9.5)
TAG('〔删除〕原附件《依据备注》表（含"风险提示""合同提示""依据链接"等 5 条外部网址）属起草说明与参考资料，'
    '不属于合同条款，现予删除。其中关于结构安全的说明已并入合同第十三条及附件一、二。')
P('（原《依据备注》表已删除。其中"涉及结构安全的尺寸、配筋、混凝土强度等，必须以正式结构施工图、'
  '地勘/验槽结果和属地主管部门要求为准"一句，已并入本合同第十三条及本附件说明。）',9.5,c=GRAY)

doc.save(F)
print('OK 附件已追加')
