ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

商店承包经营协议书模板与Python批量生成.docx实践

2026/9/18 19:26:24 拓冰建站 浏览量
商店承包经营协议书模板与Python批量生成.docx实践 简介这份《商店承包经营协议书》是一份面向商铺发包方与承包方的实用法律文书范本适用于个体经营者、商场管理方及需要规范承包关系的商业主体帮助双方在签约前厘清权责边界、降低后续纠纷风险。资源包共1个doc文件大小约17KB内容为完整的协议书正文涵盖承包标的、承包期限、承包费及交款方式、保证金、设施维护与赔偿、转承包限制、责任承担、协议终止条件与争议解决等核心条款并附有双方联系方式与身份证复印件的签署栏。协议中明确了噪音不得超过60分贝、不得从事违法违规经营、承包期满需恢复原状或完好归还等具体约束可直接作为起草或审核同类合同的参考底稿。目前已有45人学习下载适合需要快速获取规范文本、对照修改自身承包协议的读者使用。1. 从一份 .doc 合同说起商店承包经营协议书到底在解决什么问题小超市、便利店、社区商店的承包经营几乎都绕不开一份《商店承包经营协议书》。它不是一个技术产品而是一类高频出现的法律文书模板核心是把「商店的所有权」和「经营权」拆开发包方保留资产和资质承包方负责日常经营并承担约定风险。很多人第一次接触它是在接手亲戚的店、盘下一家社区超市或者公司要把自营门店转成内部承包时。这份协议真正要解决的是四件事承包范围与期限、承包金及支付方式、商品与资产的责任划分、违约与退出机制。写得好双方按条款走写得含糊后面进货、盘点、水电、证照、员工工资全是扯皮点。它适合个体经营者、小微企业主、连锁门店管理者也适合需要批量生成合同文本的行政和法务人员。下面从条款结构讲到用脚本批量生成 .doc把这份协议书真正落地。2. 商店承包经营协议书的核心条款与风险分配逻辑2.1 承包范围、期限与承包金三要素怎么定承包范围必须写到可核验的程度。常见写法是「甲方将位于 XX 的商店及店内货架、冰柜、收银设备交由乙方承包经营」但只写这些不够还要附一份资产清单作为附件注明数量、新旧程度、是否计入折旧。期限一般 1 到 3 年太短承包方不敢投入太长发包方担心资产失控。承包金有两种主流模式固定金额和「保底加提成」。固定金额简单适合流水稳定的社区店保底加提成适合新店或客流波动大的位置。要素常见取值风险点承包期限13 年未约定续约优先权到期被收回承包金固定 / 保底提成支付节点模糊拖欠无依据资产清单附件形式无清单退场时无法核对证照使用明确是否借用借用资质出事故责任不清承包金支付节点要写死比如「每月 5 日前支付当月承包金」并约定逾期违约金比例。资产清单建议用表格逐项列明退场时按清单核验缺失或损坏按约定折价赔偿。证照问题最容易被忽略如果承包方借用发包方的营业执照和食品经营许可证必须写明借用范围、期限以及出现行政处罚时由谁承担。2.2 商品、库存与损耗的责任边界商店承包里最容易吵架的就是库存。承包开始时盘一次库结束时再盘一次中间的损耗归谁必须在协议里说清。常见做法是承包方按盘点价接收库存承包期内商品损耗由承包方承担但非人为因素如设备故障导致冷藏商品变质可协商分担。盘点价一般按进价或进价加一定比例不能按零售价否则承包方等于先亏一笔。# 盘点差异计算示例对比承包开始与结束的库存金额 def inventory_diff(start_value, end_value, allowed_loss_rate0.02): start_value: 承包开始时盘点库存金额 end_value: 承包结束时盘点库存金额 allowed_loss_rate: 合同约定的合理损耗率默认 2% diff start_value - end_value allowed start_value * allowed_loss_rate if diff allowed: return f损耗 {diff:.2f} 元在合理范围内无需赔偿 else: return f超出合理损耗 {diff - allowed:.2f} 元按合同约定处理 print(inventory_diff(80000, 76000)) # 损耗 4000合理范围 1600超出 2400这段逻辑说明先算实际损耗再和合同约定的合理损耗率比较超出部分才进入赔偿流程。参数allowed_loss_rate必须和协议书里的条款一致不能一边写 2% 一边按 5% 执行。实际使用时把每次盘点的日期、金额、参与人签字记录附在协议后面形成完整证据链。2.3 违约、退出与争议解决条款的写法违约条款要分情形写拖欠承包金、擅自转包、损坏资产、提前退场每种情形对应不同的违约金或处理方式。提前退场是高频纠纷建议约定「提前 30 日书面通知并支付相当于 1 个月承包金的违约金」同时明确资产交接和库存结算的时间节点。争议解决一般选「协商不成向商店所在地人民法院起诉」比约定仲裁更省成本适合中小经营者。注意违约金比例不要写得太高超过实际损失过多可能不被支持也不要只写「按法律规定处理」等于没写。退出条款还要覆盖员工安置和证照归还。如果承包方雇了店员退场时工资结清责任要写明借用证照的约定归还时间和配合办理变更的义务。这些细节在模板里经常缺失但恰恰是退场时最耗时间的地方。3. 用 Python 批量生成商店承包经营协议书 .doc 文件3.1 环境准备与 python-docx 最小可用示例当需要给不同门店、不同承包方生成格式统一的协议书时手工改 Word 效率太低。常见做法是用python-docx读取模板或直接构建文档把变量替换成具体值。先安装依赖pip install python-docx最小示例生成一份带标题、条款段落和表格的协议书。from docx import Document from docx.shared import Pt doc Document() doc.add_heading(商店承包经营协议书, level1) # 基本信息段落 info doc.add_paragraph() info.add_run(发包方甲方).bold True info.add_run(XX 商贸有限公司\n) info.add_run(承包方乙方).bold True info.add_run(张三\n) info.add_run(承包期限).bold True info.add_run(2025 年 1 月 1 日至 2027 年 12 月 31 日) # 条款段落 doc.add_heading(第一条 承包范围, level2) doc.add_paragraph(甲方将位于 XX 路 XX 号的商店及店内资产交由乙方承包经营资产清单见附件一。) # 资产表格 table doc.add_table(rows1, cols3) table.style Table Grid hdr table.rows[0].cells hdr[0].text 资产名称 hdr[1].text 数量 hdr[2].text 状态 for name, qty, state in [(货架, 10, 良好), (冰柜, 2, 良好)]: row table.add_row().cells row[0].text name row[1].text qty row[2].text state doc.save(商店承包经营协议书_张三.docx)逻辑说明add_heading控制标题层级add_run().bold控制加粗add_table配合Table Grid样式生成带边框的资产清单。参数上level1对应一级标题level2对应条款标题。生成的是 .docxWord 可直接打开如需 .doc 可在 Word 里另存或用 LibreOffice 命令行转换。3.2 用占位符模板替换承包方、金额与日期更实用的方式是先做一份 Word 模板把可变内容写成{{承包方}}、{{承包金}}这类占位符再用脚本批量替换。这样格式由模板保证脚本只负责填数据。from docx import Document def fill_template(template_path, output_path, data): doc Document(template_path) # 替换段落中的占位符 for para in doc.paragraphs: for key, value in data.items(): if key in para.text: for run in para.runs: run.text run.text.replace(key, str(value)) # 替换表格中的占位符 for table in doc.tables: for row in table.rows: for cell in row.cells: for key, value in data.items(): if key in cell.text: cell.text cell.text.replace(key, str(value)) doc.save(output_path) data { {{承包方}}: 李四, {{承包金}}: 8000, {{起始日期}}: 2025-03-01, {{结束日期}}: 2028-02-29, } fill_template(template.docx, 协议书_李四.docx, data)逻辑说明先遍历段落再遍历表格单元格逐一把占位符替换成实际值。参数data的键必须和模板里的占位符完全一致包括花括号。注意run.text替换可能因为 Word 把一段文字拆成多个 run 而失效稳妥做法是先合并 run 或直接用para.text重建段落。批量场景下把data换成从 Excel 或 CSV 读取的列表循环调用即可。3.3 批量生成时的命名、校验与常见报错批量生成最容易出的问题是文件名冲突和占位符漏替换。命名建议用「协议书_承包方_日期.docx」并在生成后做一次校验打开文档检查是否还有{{残留。import os from docx import Document def batch_generate(template, records, out_dir): os.makedirs(out_dir, exist_okTrue) for rec in records: out os.path.join(out_dir, f协议书_{rec[{{承包方}}]}_{rec[{{起始日期}}]}.docx) fill_template(template, out, rec) # 校验残留占位符 doc Document(out) text \n.join(p.text for p in doc.paragraphs) if {{ in text: print(f警告{out} 存在未替换占位符) else: print(f已生成{out})常见报错PackageNotFoundError说明模板路径不对或文件损坏替换后格式错乱通常是 run 被拆分导致解决方法是替换前先run.text para.text再重新赋值。参数out_dir建议单独建目录避免和模板混在一起。生成完成后抽查 2 到 3 份确认金额、日期、承包方名称无误再批量分发。4. 协议书落地时的校验、归档与版本管理技巧4.1 生成后必做的三项校验第一项是占位符残留检查上面脚本已经覆盖。第二项是金额和日期格式校验比如承包金不能为空、起始日期不能晚于结束日期。第三项是条款完整性校验确认「承包范围、承包金、违约责任、争议解决」四个核心条款都存在。def validate_contract(doc_path): doc Document(doc_path) text \n.join(p.text for p in doc.paragraphs) required [承包范围, 承包金, 违约责任, 争议解决] missing [r for r in required if r not in text] if missing: return f缺少条款{, .join(missing)} return 校验通过 print(validate_contract(协议书_李四.docx))逻辑说明把文档正文拼成一个字符串逐个检查关键词是否存在。参数required按实际协议条款调整比如有的模板用「争议处理」而不是「争议解决」就要同步修改。这个校验只能查关键词不能替代人工审阅但能拦住大部分低级错误。4.2 电子归档与签署版本管理协议书生成后要归档建议按「年份/门店/承包方」三级目录存放同时保留一份 PDF 版本用于签署和存档。Word 转 PDF 可以用 LibreOffice 命令行libreoffice --headless --convert-to pdf --outdir ./pdf ./docx/协议书_李四.docx参数--headless表示无界面运行--convert-to pdf指定输出格式--outdir指定输出目录。批量转换时把文件路径换成通配符或循环即可。版本管理上每次修改协议模板都要记录版本号和修改日期已签署的旧版本不要覆盖单独存放。这样出现纠纷时能快速定位当时签的是哪一版。4.3 一个减少扯皮的技巧把资产清单做成可核验附件最后分享一个实操技巧资产清单不要只写在协议正文里单独做成附件表格每项资产标注编号、名称、数量、状态、折价退场时双方按编号逐项核验并签字。用脚本生成时把资产数据单独存成 CSV生成协议的同时生成附件保证正文和附件数据一致。import csv from docx import Document def add_asset_attachment(doc, csv_path): doc.add_page_break() doc.add_heading(附件一资产清单, level2) table doc.add_table(rows1, cols5) table.style Table Grid headers [编号, 名称, 数量, 状态, 折价] for i, h in enumerate(headers): table.rows[0].cells[i].text h with open(csv_path, encodingutf-8) as f: for row in csv.DictReader(f): cells table.add_row().cells cells[0].text row[编号] cells[1].text row[名称] cells[2].text row[数量] cells[3].text row[状态] cells[4].text row[折价] return doc逻辑说明从 CSV 读取资产数据逐行写入表格编号作为核验主键。参数上CSV 表头必须和代码里的键一致。这样生成的附件和正文同源避免手工维护两份数据导致对不上。退场核验时按编号打勾缺失或损坏的当场记录比事后回忆靠谱得多。本文还有配套的精品资源点击获取