NAC_Blockchain/nac-rwa-contract-templates/src/goods_trade.rs

614 lines
27 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 商品跨境买卖合约模板
// 覆盖主要贸易对CN-US, CN-EU, CN-JP, CN-SG, EU-US, EU-JP, US-JP
// 所有跨境商品合约均基于 Incoterms 2020 和 UCC/CISG
use crate::{ContractField, ContractTemplate, ContractTemplateType, FieldType};
pub fn get_cross_border_template(seller: &str, buyer: &str) -> Option<ContractTemplate> {
let pair = format!("{}-{}", seller.to_uppercase(), buyer.to_uppercase());
match pair.as_str() {
"CN-US" => Some(cn_us_template()),
"US-CN" => Some(cn_us_template_reversed()),
"CN-EU" | "CN-DE" | "CN-FR" => Some(cn_eu_template()),
"EU-CN" | "DE-CN" | "FR-CN" => Some(eu_cn_template()),
"CN-JP" => Some(cn_jp_template()),
"JP-CN" => Some(jp_cn_template()),
"CN-SG" => Some(cn_sg_template()),
"SG-CN" => Some(sg_cn_template()),
"EU-US" | "DE-US" | "FR-US" => Some(eu_us_template()),
"US-EU" | "US-DE" | "US-FR" => Some(us_eu_template()),
"EU-JP" | "DE-JP" | "FR-JP" => Some(eu_jp_template()),
"JP-EU" | "JP-DE" | "JP-FR" => Some(jp_eu_template()),
_ => None,
}
}
fn common_cross_border_fields(seller_currency: &str, buyer_jurisdiction: &str) -> Vec<ContractField> {
vec![
ContractField {
name: "seller_name".to_string(),
label: "卖方名称Seller".to_string(),
field_type: FieldType::Text,
required: true,
description: "卖方完整法定名称".to_string(),
legal_basis: Some("CISG Article 14".to_string()),
example: None,
},
ContractField {
name: "seller_address".to_string(),
label: "卖方地址".to_string(),
field_type: FieldType::Address,
required: true,
description: "卖方完整营业地址".to_string(),
legal_basis: None,
example: None,
},
ContractField {
name: "buyer_name".to_string(),
label: "买方名称Buyer".to_string(),
field_type: FieldType::Text,
required: true,
description: "买方完整法定名称".to_string(),
legal_basis: None,
example: None,
},
ContractField {
name: "buyer_address".to_string(),
label: "买方地址".to_string(),
field_type: FieldType::Address,
required: true,
description: "买方完整营业地址".to_string(),
legal_basis: None,
example: None,
},
ContractField {
name: "goods_description".to_string(),
label: "货物描述Description of Goods".to_string(),
field_type: FieldType::Text,
required: true,
description: "货物的详细描述,含品名、规格、型号".to_string(),
legal_basis: Some("CISG Article 35".to_string()),
example: None,
},
ContractField {
name: "hs_code".to_string(),
label: "HS编码Harmonized System Code".to_string(),
field_type: FieldType::Text,
required: true,
description: "货物的海关商品编码,用于报关和关税计算".to_string(),
legal_basis: Some("《协调制度公约》".to_string()),
example: Some("8471.30(便携式计算机)".to_string()),
},
ContractField {
name: "quantity".to_string(),
label: "数量及单位".to_string(),
field_type: FieldType::Text,
required: true,
description: "货物数量和计量单位".to_string(),
legal_basis: None,
example: Some("1000 PCS / 50 MT".to_string()),
},
ContractField {
name: "unit_price".to_string(),
label: "单价".to_string(),
field_type: FieldType::Currency { currency_code: seller_currency.to_string() },
required: true,
description: "每单位货物的价格".to_string(),
legal_basis: None,
example: None,
},
ContractField {
name: "total_amount".to_string(),
label: "合同总金额".to_string(),
field_type: FieldType::Currency { currency_code: seller_currency.to_string() },
required: true,
description: "合同总金额".to_string(),
legal_basis: None,
example: None,
},
ContractField {
name: "incoterms".to_string(),
label: "贸易术语Incoterms 2020".to_string(),
field_type: FieldType::Enum(vec![
"EXW工厂交货".to_string(),
"FCA货交承运人".to_string(),
"FOB船上交货".to_string(),
"CFR成本加运费".to_string(),
"CIF成本加保险费加运费".to_string(),
"DAP目的地交货".to_string(),
"DDP完税后交货".to_string(),
]),
required: true,
description: "确定风险和费用转移点的贸易术语Incoterms 2020".to_string(),
legal_basis: Some("Incoterms 2020ICC".to_string()),
example: Some("FOB Shanghai".to_string()),
},
ContractField {
name: "port_of_loading".to_string(),
label: "装运港Port of Loading".to_string(),
field_type: FieldType::Text,
required: true,
description: "货物装船的港口".to_string(),
legal_basis: None,
example: Some("Shanghai, China".to_string()),
},
ContractField {
name: "port_of_discharge".to_string(),
label: "目的港Port of Discharge".to_string(),
field_type: FieldType::Text,
required: true,
description: "货物卸货的目的港".to_string(),
legal_basis: None,
example: Some(format!("Port in {}", buyer_jurisdiction)),
},
ContractField {
name: "shipment_date".to_string(),
label: "装运日期Shipment Date".to_string(),
field_type: FieldType::Date,
required: true,
description: "货物装船的最迟日期".to_string(),
legal_basis: None,
example: None,
},
ContractField {
name: "payment_terms".to_string(),
label: "付款方式Payment Terms".to_string(),
field_type: FieldType::Enum(vec![
"信用证L/C at sight".to_string(),
"远期信用证L/C 30/60/90 days".to_string(),
"电汇T/T".to_string(),
"托收D/P".to_string(),
"赊销O/A".to_string(),
]),
required: true,
description: "买方向卖方付款的方式".to_string(),
legal_basis: None,
example: None,
},
ContractField {
name: "quality_standard".to_string(),
label: "质量标准".to_string(),
field_type: FieldType::Text,
required: true,
description: "货物须符合的质量标准如ISO、ASTM、GB等".to_string(),
legal_basis: Some("CISG Article 35".to_string()),
example: None,
},
ContractField {
name: "insurance".to_string(),
label: "保险Insurance".to_string(),
field_type: FieldType::Text,
required: true,
description: "货物运输保险安排CIF条款下由卖方投保".to_string(),
legal_basis: None,
example: Some("ICC (A) 110% of invoice value".to_string()),
},
ContractField {
name: "force_majeure".to_string(),
label: "不可抗力条款Force Majeure".to_string(),
field_type: FieldType::Boolean,
required: true,
description: "是否包含不可抗力条款".to_string(),
legal_basis: Some("CISG Article 79".to_string()),
example: None,
},
]
}
fn cn_us_template() -> ContractTemplate {
let mut fields = common_cross_border_fields("USD", "US");
fields.push(ContractField {
name: "export_license".to_string(),
label: "出口许可证(如需)".to_string(),
field_type: FieldType::Text,
required: true,
description: "受管制商品须提供中国商务部出口许可证".to_string(),
legal_basis: Some("《中华人民共和国出口管制法》".to_string()),
example: None,
});
fields.push(ContractField {
name: "us_customs_bond".to_string(),
label: "美国海关担保US Customs Bond".to_string(),
field_type: FieldType::Boolean,
required: true,
description: "进口商须提供美国海关担保".to_string(),
legal_basis: Some("US CBP要求".to_string()),
example: None,
});
fields.push(ContractField {
name: "anti_dumping_check".to_string(),
label: "反倾销/反补贴税确认".to_string(),
field_type: FieldType::Boolean,
required: true,
description: "确认货物是否受美国反倾销或反补贴税令约束".to_string(),
legal_basis: Some("US ITC/DOC裁定".to_string()),
example: None,
});
ContractTemplate {
template_id: "GT-CN-US-001".to_string(),
template_type: ContractTemplateType::GoodsSaleCrossBorder,
jurisdiction: "CN".to_string(),
counterpart_jurisdiction: Some("US".to_string()),
name: "中美跨境商品买卖合同(中国出口→美国进口)".to_string(),
description: "适用于中国出口商向美国进口商出售商品的跨境贸易合同".to_string(),
legal_system: "CISG联合国国际货物销售合同公约".to_string(),
required_fields: fields,
optional_fields: vec![
ContractField {
name: "section_301_tariff".to_string(),
label: "301条款关税确认".to_string(),
field_type: FieldType::Text,
required: false,
description: "确认货物是否受美国301条款额外关税影响".to_string(),
legal_basis: None,
example: None,
},
],
required_attachments: vec![
"商业发票Commercial Invoice".to_string(),
"装箱单Packing List".to_string(),
"提单Bill of Lading / B/L".to_string(),
"原产地证明Certificate of Origin / CO".to_string(),
"检验证书Inspection Certificate".to_string(),
"保险单Insurance Policy".to_string(),
"出口报关单(中国海关)".to_string(),
"进口报关单美国CBP".to_string(),
],
special_requirements: vec![
"须遵守中国《出口管制法》,管制商品须申请出口许可证".to_string(),
"须遵守美国CBP进口要求提前申报ISF 10+2".to_string(),
"须确认是否受美国301条款额外关税影响".to_string(),
"须确认是否受反倾销/反补贴税令约束".to_string(),
"须遵守美国FDA/FCC/CPSC等产品合规要求视货物类型".to_string(),
"须遵守OFAC制裁规定".to_string(),
],
applicable_taxes: vec![
"中国出口退税视商品类型0%-13%".to_string(),
"美国进口关税MFN税率+301条款附加税7.5%-25%".to_string(),
"美国进口增值税美国无联邦VAT".to_string(),
],
dispute_resolution_suggestion: "适用CISG争议提交ICC仲裁巴黎或CIETAC仲裁北京".to_string(),
language_requirements: vec!["中文(正本)".to_string(), "英文(副本)".to_string()],
}
}
fn cn_us_template_reversed() -> ContractTemplate {
let mut t = cn_us_template();
t.template_id = "GT-US-CN-001".to_string();
t.jurisdiction = "US".to_string();
t.counterpart_jurisdiction = Some("CN".to_string());
t.name = "美中跨境商品买卖合同(美国出口→中国进口)".to_string();
t.description = "适用于美国出口商向中国进口商出售商品的跨境贸易合同".to_string();
t
}
fn cn_eu_template() -> ContractTemplate {
let mut fields = common_cross_border_fields("EUR", "EU");
fields.push(ContractField {
name: "ce_marking".to_string(),
label: "CE认证CE Marking".to_string(),
field_type: FieldType::Boolean,
required: true,
description: "进入欧盟市场的产品须符合CE认证要求".to_string(),
legal_basis: Some("欧盟产品安全指令".to_string()),
example: None,
});
fields.push(ContractField {
name: "reach_compliance".to_string(),
label: "REACH合规".to_string(),
field_type: FieldType::Boolean,
required: true,
description: "化学品须符合欧盟REACH法规要求".to_string(),
legal_basis: Some("EC 1907/2006".to_string()),
example: None,
});
fields.push(ContractField {
name: "eu_customs_code".to_string(),
label: "欧盟海关编码CN Code".to_string(),
field_type: FieldType::Text,
required: true,
description: "欧盟组合命名法的商品编码".to_string(),
legal_basis: Some("欧盟关税法典UCC".to_string()),
example: None,
});
ContractTemplate {
template_id: "GT-CN-EU-001".to_string(),
template_type: ContractTemplateType::GoodsSaleCrossBorder,
jurisdiction: "CN".to_string(),
counterpart_jurisdiction: Some("EU".to_string()),
name: "中欧跨境商品买卖合同(中国出口→欧盟进口)".to_string(),
description: "适用于中国出口商向欧盟进口商出售商品的跨境贸易合同".to_string(),
legal_system: "CISG联合国国际货物销售合同公约".to_string(),
required_fields: fields,
optional_fields: vec![
ContractField {
name: "anti_dumping_eu".to_string(),
label: "欧盟反倾销税确认".to_string(),
field_type: FieldType::Text,
required: false,
description: "确认货物是否受欧盟反倾销税令约束".to_string(),
legal_basis: None,
example: None,
},
],
required_attachments: vec![
"商业发票Commercial Invoice".to_string(),
"装箱单Packing List".to_string(),
"提单Bill of Lading / B/L".to_string(),
"原产地证明Certificate of Origin / Form A".to_string(),
"检验证书Inspection Certificate".to_string(),
"保险单Insurance Policy".to_string(),
"出口报关单(中国海关)".to_string(),
"欧盟进口报关单SAD".to_string(),
"CE认证文件如适用".to_string(),
],
special_requirements: vec![
"须遵守中国《出口管制法》".to_string(),
"须符合欧盟产品安全要求CE认证等".to_string(),
"须符合欧盟REACH化学品法规如适用".to_string(),
"须遵守欧盟关税法典UCC进口要求".to_string(),
"须确认是否受欧盟反倾销税令约束".to_string(),
"须符合欧盟海关进口安全申报ICS2".to_string(),
],
applicable_taxes: vec![
"中国出口退税视商品类型0%-13%".to_string(),
"欧盟进口关税MFN税率视商品".to_string(),
"欧盟进口增值税各成员国不同约20%".to_string(),
],
dispute_resolution_suggestion: "适用CISG争议提交ICC仲裁巴黎或CIETAC仲裁北京".to_string(),
language_requirements: vec!["中文(正本)".to_string(), "英文(副本)".to_string()],
}
}
fn eu_cn_template() -> ContractTemplate {
let mut t = cn_eu_template();
t.template_id = "GT-EU-CN-001".to_string();
t.jurisdiction = "EU".to_string();
t.counterpart_jurisdiction = Some("CN".to_string());
t.name = "欧中跨境商品买卖合同(欧盟出口→中国进口)".to_string();
t.description = "适用于欧盟出口商向中国进口商出售商品的跨境贸易合同".to_string();
t
}
fn cn_jp_template() -> ContractTemplate {
let mut fields = common_cross_border_fields("JPY", "JP");
fields.push(ContractField {
name: "pse_compliance".to_string(),
label: "PSE认证日本电气安全".to_string(),
field_type: FieldType::Boolean,
required: true,
description: "电气产品进入日本市场须符合PSE认证".to_string(),
legal_basis: Some("《电气用品安全法》DENAN".to_string()),
example: None,
});
fields.push(ContractField {
name: "food_sanitation".to_string(),
label: "食品卫生法合规(如适用)".to_string(),
field_type: FieldType::Boolean,
required: true,
description: "食品类商品须符合日本《食品卫生法》".to_string(),
legal_basis: Some("《食品卫生法》".to_string()),
example: None,
});
ContractTemplate {
template_id: "GT-CN-JP-001".to_string(),
template_type: ContractTemplateType::GoodsSaleCrossBorder,
jurisdiction: "CN".to_string(),
counterpart_jurisdiction: Some("JP".to_string()),
name: "中日跨境商品买卖合同(中国出口→日本进口)".to_string(),
description: "适用于中国出口商向日本进口商出售商品的跨境贸易合同适用RCEP优惠税率".to_string(),
legal_system: "CISG联合国国际货物销售合同公约".to_string(),
required_fields: fields,
optional_fields: vec![
ContractField {
name: "rcep_origin_cert".to_string(),
label: "RCEP原产地证书".to_string(),
field_type: FieldType::Text,
required: false,
description: "申请RCEP优惠税率须提供RCEP原产地证书".to_string(),
legal_basis: Some("RCEP协议".to_string()),
example: None,
},
],
required_attachments: vec![
"商业发票Commercial Invoice".to_string(),
"装箱单Packing List".to_string(),
"提单Bill of Lading / B/L".to_string(),
"原产地证明Certificate of Origin".to_string(),
"检验证书Inspection Certificate".to_string(),
"保险单Insurance Policy".to_string(),
"出口报关单(中国海关)".to_string(),
"日本进口申报书".to_string(),
],
special_requirements: vec![
"须遵守中国《出口管制法》".to_string(),
"须符合日本产品安全要求PSE/PSC等".to_string(),
"可申请RCEP优惠税率须提供RCEP原产地证书".to_string(),
"食品类须符合日本《食品卫生法》".to_string(),
"须遵守日本海关进口申报要求".to_string(),
],
applicable_taxes: vec![
"中国出口退税视商品类型0%-13%".to_string(),
"日本进口关税MFN税率或RCEP优惠税率".to_string(),
"日本消费税10%".to_string(),
],
dispute_resolution_suggestion: "适用CISG争议提交JCAA仲裁东京或CIETAC仲裁北京".to_string(),
language_requirements: vec!["中文(正本)".to_string(), "日文(副本)".to_string()],
}
}
fn jp_cn_template() -> ContractTemplate {
let mut t = cn_jp_template();
t.template_id = "GT-JP-CN-001".to_string();
t.jurisdiction = "JP".to_string();
t.counterpart_jurisdiction = Some("CN".to_string());
t.name = "日中跨境商品买卖合同(日本出口→中国进口)".to_string();
t
}
fn cn_sg_template() -> ContractTemplate {
let mut fields = common_cross_border_fields("SGD", "SG");
fields.push(ContractField {
name: "rcep_cert".to_string(),
label: "RCEP原产地证书".to_string(),
field_type: FieldType::Text,
required: true,
description: "申请RCEP优惠税率须提供原产地证书".to_string(),
legal_basis: Some("RCEP协议".to_string()),
example: None,
});
ContractTemplate {
template_id: "GT-CN-SG-001".to_string(),
template_type: ContractTemplateType::GoodsSaleCrossBorder,
jurisdiction: "CN".to_string(),
counterpart_jurisdiction: Some("SG".to_string()),
name: "中新跨境商品买卖合同(中国出口→新加坡进口)".to_string(),
description: "适用于中国出口商向新加坡进口商出售商品适用RCEP/CSFTA优惠税率".to_string(),
legal_system: "CISG".to_string(),
required_fields: fields,
optional_fields: vec![],
required_attachments: vec![
"商业发票Commercial Invoice".to_string(),
"装箱单Packing List".to_string(),
"提单Bill of Lading / B/L".to_string(),
"原产地证明CO".to_string(),
"检验证书".to_string(),
"保险单".to_string(),
"出口报关单(中国海关)".to_string(),
"新加坡进口许可证(如适用)".to_string(),
],
special_requirements: vec![
"可申请CSFTA中新自贸协定或RCEP优惠税率".to_string(),
"须遵守新加坡海关进口申报要求TradeNet系统".to_string(),
"须符合新加坡产品安全要求SPRING Singapore".to_string(),
],
applicable_taxes: vec![
"新加坡进口关税大多数商品0%(自由港)".to_string(),
"新加坡GST9%2024年起".to_string(),
],
dispute_resolution_suggestion: "适用CISG争议提交SIAC仲裁新加坡或CIETAC仲裁北京".to_string(),
language_requirements: vec!["中文(正本)".to_string(), "英文(副本)".to_string()],
}
}
fn sg_cn_template() -> ContractTemplate {
let mut t = cn_sg_template();
t.template_id = "GT-SG-CN-001".to_string();
t.jurisdiction = "SG".to_string();
t.counterpart_jurisdiction = Some("CN".to_string());
t.name = "新中跨境商品买卖合同(新加坡出口→中国进口)".to_string();
t
}
fn eu_us_template() -> ContractTemplate {
let mut fields = common_cross_border_fields("USD", "US");
fields.push(ContractField {
name: "us_fda_compliance".to_string(),
label: "美国FDA合规如适用".to_string(),
field_type: FieldType::Boolean,
required: true,
description: "食品、药品、医疗器械须符合FDA要求".to_string(),
legal_basis: Some("US FDA法规".to_string()),
example: None,
});
ContractTemplate {
template_id: "GT-EU-US-001".to_string(),
template_type: ContractTemplateType::GoodsSaleCrossBorder,
jurisdiction: "EU".to_string(),
counterpart_jurisdiction: Some("US".to_string()),
name: "欧美跨境商品买卖合同(欧盟出口→美国进口)".to_string(),
description: "适用于欧盟出口商向美国进口商出售商品".to_string(),
legal_system: "CISG".to_string(),
required_fields: fields,
optional_fields: vec![],
required_attachments: vec![
"商业发票Commercial Invoice".to_string(),
"装箱单Packing List".to_string(),
"提单Bill of Lading / B/L".to_string(),
"EUR.1原产地证书(欧盟出口)".to_string(),
"检验证书".to_string(),
"保险单".to_string(),
"美国进口报关单CBP Form 3461".to_string(),
],
special_requirements: vec![
"须符合美国CBP进口要求ISF 10+2".to_string(),
"须符合美国产品安全要求FDA/FCC/CPSC等".to_string(),
"须遵守OFAC制裁规定".to_string(),
],
applicable_taxes: vec![
"美国进口关税MFN税率欧盟商品".to_string(),
"美国无联邦VAT".to_string(),
],
dispute_resolution_suggestion: "适用CISG争议提交ICC仲裁巴黎或AAA仲裁纽约".to_string(),
language_requirements: vec!["英文".to_string()],
}
}
fn us_eu_template() -> ContractTemplate {
let mut t = eu_us_template();
t.template_id = "GT-US-EU-001".to_string();
t.jurisdiction = "US".to_string();
t.counterpart_jurisdiction = Some("EU".to_string());
t.name = "美欧跨境商品买卖合同(美国出口→欧盟进口)".to_string();
t
}
fn eu_jp_template() -> ContractTemplate {
let mut fields = common_cross_border_fields("EUR", "JP");
fields.push(ContractField {
name: "epa_cert".to_string(),
label: "欧日EPA原产地证书".to_string(),
field_type: FieldType::Text,
required: true,
description: "申请欧日EPA优惠税率须提供原产地声明".to_string(),
legal_basis: Some("EU-Japan EPA2019年生效".to_string()),
example: None,
});
ContractTemplate {
template_id: "GT-EU-JP-001".to_string(),
template_type: ContractTemplateType::GoodsSaleCrossBorder,
jurisdiction: "EU".to_string(),
counterpart_jurisdiction: Some("JP".to_string()),
name: "欧日跨境商品买卖合同(欧盟出口→日本进口)".to_string(),
description: "适用于欧盟出口商向日本进口商出售商品适用EU-Japan EPA优惠税率".to_string(),
legal_system: "CISG".to_string(),
required_fields: fields,
optional_fields: vec![],
required_attachments: vec![
"商业发票Commercial Invoice".to_string(),
"装箱单Packing List".to_string(),
"提单Bill of Lading / B/L".to_string(),
"EPA原产地声明EUR.1或发票声明)".to_string(),
"检验证书".to_string(),
"保险单".to_string(),
"日本进口申报书".to_string(),
],
special_requirements: vec![
"可申请EU-Japan EPA优惠税率须提供原产地声明".to_string(),
"须符合日本产品安全要求".to_string(),
"须遵守日本海关进口申报要求".to_string(),
],
applicable_taxes: vec![
"日本进口关税EPA优惠税率逐步降至0%".to_string(),
"日本消费税10%".to_string(),
],
dispute_resolution_suggestion: "适用CISG争议提交ICC仲裁巴黎或JCAA仲裁东京".to_string(),
language_requirements: vec!["英文".to_string()],
}
}
fn jp_eu_template() -> ContractTemplate {
let mut t = eu_jp_template();
t.template_id = "GT-JP-EU-001".to_string();
t.jurisdiction = "JP".to_string();
t.counterpart_jurisdiction = Some("EU".to_string());
t.name = "日欧跨境商品买卖合同(日本出口→欧盟进口)".to_string();
t
}