diff --git a/vasl_templates/webapp/data/ordnance/chinese.json b/vasl_templates/webapp/data/ordnance/chinese.json
new file mode 100644
index 0000000..97c73a8
--- /dev/null
+++ b/vasl_templates/webapp/data/ordnance/chinese.json
@@ -0,0 +1,210 @@
+[
+
+{ "name": "Type 27 Grenade Launcher",
+ "capabilities_other": [ "2PP", "Air Bursts NA\u2020" ],
+ "note_number": "1\u2020",
+ "notes": [ "A" ]
+},
+{ "name": "Mortaio da 45 \"Brixia\"",
+ "capabilities_other": [ "4PP" ],
+ "note_number": "2",
+ "notes": [ "A", "D\u2020" ]
+},
+{ "name": "5cm leGrW 36",
+ "capabilities_other": [ "5PP" ],
+ "note_number": "2",
+ "notes": [ "A" ]
+},
+{ "name": "50mm RM obr. 38",
+ "capabilities_other": [ "5PP" ],
+ "note_number": "2",
+ "notes": [ "A" ]
+},
+{ "name": "Type 89 Heavy Grenade Launcher",
+ "capabilities": [ "IR" ],
+ "capabilities2": { "s": 5, "WP": 5 },
+ "capabilities_other": [ "4PP" ],
+ "note_number": "2\u2020",
+ "notes": [ "A" ]
+},
+{ "name": "M2 60mm",
+ "capabilities": [ "IR" ],
+ "capabilities_other": [ "5PP", "OBA\u2020" ],
+ "note_number": "3\u2020",
+ "notes": [ "A" ]
+},
+{ "name": "Stokes 3-in.",
+ "capabilities": [ "NT", "QSU" ],
+ "note_number": "4",
+ "notes": [ "A", "E\u2020" ]
+},
+{ "name": "8cm GrW 34",
+ "capabilities": [ "NT", "QSU", "IR" ],
+ "capabilities2": { "s": 6 },
+ "note_number": "4",
+ "notes": [ "A", "E\u2020" ]
+},
+{ "name": "82mm BM obr. 37",
+ "capabilities": [ "NT", "QSU", "IR" ],
+ "capabilities2": { "s": 6 },
+ "note_number": "4",
+ "notes": [ "A", "E\u2020" ]
+},
+{ "name": "M1 81mm",
+ "capabilities": [ "NT", "QSU" ],
+ "capabilities2": { "WP": 7 },
+ "note_number": "5",
+ "notes": [ "A", "B" ]
+},
+{ "name": "M2 4.2-in.",
+ "capabilities": [ "NT", "QSU" ],
+ "capabilities2": { "WP": 9 },
+ "note_number": "5\u2020",
+ "notes": [ "B" ]
+},
+{ "name": "3.7cm PaK 35/36",
+ "capabilities": [ "NT", "QSU" ],
+ "note_number": "6",
+ "notes": [ "E\u2020" ]
+},
+{ "name": "M3A1 37mm",
+ "capabilities": [ "NT", "QSU" ],
+ "capabilities2": { "C": "7\u20201" },
+ "note_number": "6\u2020",
+ "notes": [ "C\u20201" ]
+},
+{ "name": "37mm PP obr. 15R",
+ "capabilities": [ "NT", "QSU", "h-d" ],
+ "capabilities_other": [ "Low Ammo\u2020" ],
+ "note_number": "7\u2020",
+ "notes": [ "B" ]
+},
+{ "name": "Cannone da 70/15",
+ "capabilities": [ "NT", "QSU", "Acq. NA\u2020", "Low Ammo\u2020", "h-d" ],
+ "note_number": "7\u2020",
+ "notes": [ "A", "B" ]
+},
+{ "name": "7.5cm Krupp M08",
+ "capabilities": [ "NT", "QSU", "h-d" ],
+ "capabilities2": { "s": 5, "AP": 5 },
+ "note_number": "8",
+ "notes": [ "A", "F\u2020" ]
+},
+{ "name": "Obice da 75/13",
+ "capabilities": [ "NT", "QSU", "h-d" ],
+ "note_number": "8",
+ "notes": [ "A", "D\u2020", "F\u20201" ]
+},
+{ "name": "7.5cm leIG 18",
+ "capabilities": [ "NT", "QSU", "h-d" ],
+ "note_number": "9\u2020"
+},
+{ "name": "76.2mm PP obr. 27",
+ "capabilities": [ "NT", "QSU" ],
+ "capabilities2": { "s": 6, "AP": 6 },
+ "note_number": "9\u20201",
+ "notes": [ "D\u2020" ]
+},
+{ "name": "M1A1 75mm Pack Howitzer",
+ "capabilities": [ "NT", "QSU", "h-d" ],
+ "capabilities2": { "WP": 7, "C": "5\u20201" },
+ "note_number": "10\u2020",
+ "notes": [ "A", "C \u20201" ]
+},
+{ "name": "7.7cm FK 16",
+ "capabilities": [ "NT", "QSU", "h-d" ],
+ "capabilities2": { "s": 5, "AP": 6 },
+ "note_number": "11",
+ "notes": [ "F\u2020" ]
+},
+{ "name": "76.2mm P obr. 02/30",
+ "capabilities": [ "NT", "QSU", "h-d" ],
+ "capabilities2": { "s": 6, "AP": 6 },
+ "note_number": "11",
+ "notes": [ "D\u2020", "F\u20201" ]
+},
+{ "name": "OQF 18-Pounder",
+ "capabilities": [ "NT", "QSU", "h-d" ],
+ "capabilities2": { "s": 6, "WP": 5, "AP": 6 },
+ "note_number": "11",
+ "notes": [ "B" ]
+},
+{ "name": "10.5cm leFH 16",
+ "capabilities": [ "NT", "h-d" ],
+ "capabilities2": { "s": 6 },
+ "note_number": "12\u2020",
+ "notes": [ "A" ]
+},
+{ "name": "Cannone da 105/28",
+ "capabilities": [ "NT" ],
+ "capabilities2": { "s": 6, "AP": 5 },
+ "note_number": "12",
+ "notes": [ "F\u2020" ]
+},
+{ "name": "M2A1 105mm Howitzer",
+ "capabilities": [ "NT" ],
+ "capabilities2": { "s": 6, "WP": 7, "C": "5\u2020" },
+ "note_number": "12",
+ "notes": [ "B", "C\u2020" ]
+},
+{ "name": "122mm G obr. 10/30",
+ "capabilities": [ "NT", "h-d" ],
+ "capabilities2": { "s": 6 },
+ "note_number": "13",
+ "notes": [ "B", "D\u2020" ]
+},
+{ "name": "122mm G obr. 38",
+ "capabilities": [ "NT" ],
+ "capabilities2": { "s": 6 },
+ "note_number": "13",
+ "notes": [ "B", "D\u2020" ]
+},
+{ "name": "Obice da 149/13",
+ "capabilities": [ "NT", "h-dC\u2020" ],
+ "capabilities2": { "s": 5, "WP": [ [6,"B"], "\u2020" ] },
+ "note_number": "14\u2020"
+},
+{ "name": "Oerlikon FF",
+ "capabilities": [ "T" ],
+ "capabilities2": { "LF": [ "NT", "20\u2020", "2 ROF", "B10" ] },
+ "note_number": "15\u20201",
+ "notes": [ "G\u2020" ]
+},
+{ "name": "Cannone-mitra. da 20/65",
+ "capabilities": [ "T" ],
+ "capabilities2": { "LF": [ "NT", "20\u20201", "2 ROF" ] },
+ "note_number": "15\u20202",
+ "notes": [ "D\u2020", "G\u20201" ]
+},
+{ "name": "2cm FlaK 30",
+ "capabilities": [ "T" ],
+ "capabilities2": { "LF": [ "NT", "20\u2020", "2 ROF", "B10" ] },
+ "note_number": "15\u20201",
+ "notes": [ "G\u2020" ]
+},
+{ "name": "3.7cm FlaK 36 o. 37",
+ "capabilities": [ "T" ],
+ "capabilities2": { "AP": 6 },
+ "note_number": "16",
+ "notes": [ "B" ]
+},
+{ "name": "Bofors 40mm L/60",
+ "capabilities": [ "T" ],
+ "capabilities2": { "LF": [ "40\u20201", "2 ROF" ], "AP": 6 },
+ "note_number": "16\u2020",
+ "notes": [ "G\u20201" ]
+},
+{ "name": "Bofors 75mm M29",
+ "capabilities": [ "T" ],
+ "capabilities2": { "LF": [ "75\u20201", "1 ROF", "B10\u2020" ], "AP": 6 },
+ "note_number": "17",
+ "notes": [ "B", "D\u2020", "G\u20201" ]
+},
+{ "name": "8.8cm FlaK 18",
+ "capabilities": [ "T" ],
+ "capabilities2": { "LF": [ "88\u20201", "1 ROF", "B10\u2020" ], "AP": 6 },
+ "note_number": "17",
+ "notes": [ "B", "D\u2020", "G\u20201" ]
+}
+
+]
diff --git a/vasl_templates/webapp/static/snippets.js b/vasl_templates/webapp/static/snippets.js
index 06cf59e..84db2a4 100644
--- a/vasl_templates/webapp/static/snippets.js
+++ b/vasl_templates/webapp/static/snippets.js
@@ -408,7 +408,7 @@ function _check_capability_timestamp( capabilities, timestamp, scenario_theater,
{
var MONTH_NAMES = { F:2, J:6, A:8, S:9 } ;
- // check for a ETO/PTO-only flag
+ // check for a theater flag
if ( timestamp.substring( timestamp.length-1 ) === "E" ) {
if ( scenario_theater != "ETO" )
return "" ;
@@ -419,6 +419,11 @@ function _check_capability_timestamp( capabilities, timestamp, scenario_theater,
return "" ;
timestamp = timestamp.substring( 0, timestamp.length-1 ) ;
}
+ if ( timestamp.substring( timestamp.length-1 ) === "B" ) {
+ if ( scenario_theater != "Burma" )
+ return "" ;
+ timestamp = timestamp.substring( 0, timestamp.length-1 ) ;
+ }
// remove any trailing "+" (FIXME! What does it even mean? Doesn't make sense :-/)
if ( timestamp.substring( timestamp.length-1 ) == "+" )
diff --git a/vasl_templates/webapp/templates/index.html b/vasl_templates/webapp/templates/index.html
index 069bbd5..4a89696 100644
--- a/vasl_templates/webapp/templates/index.html
+++ b/vasl_templates/webapp/templates/index.html
@@ -62,6 +62,7 @@
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1940.txt
new file mode 100644
index 0000000..8074b49
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1940.txt
@@ -0,0 +1,40 @@
+=== ordnance/chinese/1940 ===
+
+Name Capabilities (effective) # Notes
+------------------------------ ------------------------------ ------------------------------ ------ --------------------------
+Type 27 Grenade Launcher 2PP Air Bursts NA† 2PP Air Bursts NA† 1† A
+Mortaio da 45 "Brixia" 4PP 4PP 2 A D†
+5cm leGrW 36 5PP 5PP 2 A
+50mm RM obr. 38 5PP 5PP 2 A
+Type 89 Heavy Grenade Launcher IR WP5 s5 4PP IR WP5 s5 4PP 2† A
+M2 60mm IR 5PP OBA† IR 5PP OBA† 3† A
+Stokes 3-in. NT QSU NT QSU 4 A E†
+8cm GrW 34 NT QSU IR s6 NT QSU IR s6 4 A E†
+82mm BM obr. 37 NT QSU IR s6 NT QSU IR s6 4 A E†
+M1 81mm NT QSU WP7 NT QSU WP7 5 A B
+M2 4.2-in. NT QSU WP9 NT QSU WP9 5† B
+3.7cm PaK 35/36 NT QSU NT QSU 6 E†
+M3A1 37mm NT QSU C7†[1] NT QSU C7†[1] 6† C†1
+37mm PP obr. 15R NT QSU h-d Low Ammo† NT QSU h-d Low Ammo† 7† B
+Cannone da 70/15 NT QSU Acq. NA† Low Ammo† h-d NT QSU Acq. NA† Low Ammo† h-d 7† A B
+7.5cm Krupp M08 NT QSU h-d AP5 s5 NT QSU h-d AP5 s5 8 A F†
+Obice da 75/13 NT QSU h-d NT QSU h-d 8 A D† F†1
+7.5cm leIG 18 NT QSU h-d NT QSU h-d 9† n/a
+76.2mm PP obr. 27 NT QSU AP6 s6 NT QSU AP6 s6 9†[1] D†
+M1A1 75mm Pack Howitzer NT QSU h-d C5†[1] WP7 NT QSU h-d C5†[1] WP7 10† A C †1
+7.7cm FK 16 NT QSU h-d AP6 s5 NT QSU h-d AP6 s5 11 F†
+76.2mm P obr. 02/30 NT QSU h-d AP6 s6 NT QSU h-d AP6 s6 11 D† F†1
+OQF 18-Pounder NT QSU h-d AP6 WP5 s6 NT QSU h-d AP6 WP5 s6 11 B
+10.5cm leFH 16 NT h-d s6 NT h-d s6 12† A
+Cannone da 105/28 NT AP5 s6 NT AP5 s6 12 F†
+M2A1 105mm Howitzer NT C5† WP7 s6 NT C5† WP7 s6 12 B C†
+122mm G obr. 10/30 NT h-d s6 NT h-d s6 13 B D†
+122mm G obr. 38 NT s6 NT s6 13 B D†
+Obice da 149/13 NT h-d[C]† WP6[B]† s5 NT h-d[C]† s5 14† n/a
+Oerlikon FF T LF [NT, 20†, 2 ROF, B10] T LF [NT, 20†, 2 ROF, B10] 15†[1] G†
+Cannone-mitra. da 20/65 T LF [NT, 20†[1], 2 ROF] T LF [NT, 20†[1], 2 ROF] 15†[2] D† G†1
+2cm FlaK 30 T LF [NT, 20†, 2 ROF, B10] T LF [NT, 20†, 2 ROF, B10] 15†[1] G†
+3.7cm FlaK 36 o. 37 T AP6 T AP6 16 B
+Bofors 40mm L/60 T AP6 LF [40†[1], 2 ROF] T AP6 LF [40†[1], 2 ROF] 16† G†1
+Bofors 75mm M29 T AP6 LF [75†[1], 1 ROF, B10†] T AP6 LF [75†[1], 1 ROF, B10†] 17 B D† G†1
+8.8cm FlaK 18 T AP6 LF [88†[1], 1 ROF, B10†] T AP6 LF [88†[1], 1 ROF, B10†] 17 B D† G†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1941.txt
new file mode 100644
index 0000000..4ba1140
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1941.txt
@@ -0,0 +1,40 @@
+=== ordnance/chinese/1941 ===
+
+Name Capabilities (effective) # Notes
+------------------------------ ------------------------------ ------------------------------ ------ --------------------------
+Type 27 Grenade Launcher 2PP Air Bursts NA† 2PP Air Bursts NA† 1† A
+Mortaio da 45 "Brixia" 4PP 4PP 2 A D†
+5cm leGrW 36 5PP 5PP 2 A
+50mm RM obr. 38 5PP 5PP 2 A
+Type 89 Heavy Grenade Launcher IR WP5 s5 4PP IR WP5 s5 4PP 2† A
+M2 60mm IR 5PP OBA† IR 5PP OBA† 3† A
+Stokes 3-in. NT QSU NT QSU 4 A E†
+8cm GrW 34 NT QSU IR s6 NT QSU IR s6 4 A E†
+82mm BM obr. 37 NT QSU IR s6 NT QSU IR s6 4 A E†
+M1 81mm NT QSU WP7 NT QSU WP7 5 A B
+M2 4.2-in. NT QSU WP9 NT QSU WP9 5† B
+3.7cm PaK 35/36 NT QSU NT QSU 6 E†
+M3A1 37mm NT QSU C7†[1] NT QSU C7†[1] 6† C†1
+37mm PP obr. 15R NT QSU h-d Low Ammo† NT QSU h-d Low Ammo† 7† B
+Cannone da 70/15 NT QSU Acq. NA† Low Ammo† h-d NT QSU Acq. NA† Low Ammo† h-d 7† A B
+7.5cm Krupp M08 NT QSU h-d AP5 s5 NT QSU h-d AP5 s5 8 A F†
+Obice da 75/13 NT QSU h-d NT QSU h-d 8 A D† F†1
+7.5cm leIG 18 NT QSU h-d NT QSU h-d 9† n/a
+76.2mm PP obr. 27 NT QSU AP6 s6 NT QSU AP6 s6 9†[1] D†
+M1A1 75mm Pack Howitzer NT QSU h-d C5†[1] WP7 NT QSU h-d C5†[1] WP7 10† A C †1
+7.7cm FK 16 NT QSU h-d AP6 s5 NT QSU h-d AP6 s5 11 F†
+76.2mm P obr. 02/30 NT QSU h-d AP6 s6 NT QSU h-d AP6 s6 11 D† F†1
+OQF 18-Pounder NT QSU h-d AP6 WP5 s6 NT QSU h-d AP6 WP5 s6 11 B
+10.5cm leFH 16 NT h-d s6 NT h-d s6 12† A
+Cannone da 105/28 NT AP5 s6 NT AP5 s6 12 F†
+M2A1 105mm Howitzer NT C5† WP7 s6 NT C5† WP7 s6 12 B C†
+122mm G obr. 10/30 NT h-d s6 NT h-d s6 13 B D†
+122mm G obr. 38 NT s6 NT s6 13 B D†
+Obice da 149/13 NT h-d[C]† WP6[B]† s5 NT h-d[C]† s5 14† n/a
+Oerlikon FF T LF [NT, 20†, 2 ROF, B10] T LF [NT, 20†, 2 ROF, B10] 15†[1] G†
+Cannone-mitra. da 20/65 T LF [NT, 20†[1], 2 ROF] T LF [NT, 20†[1], 2 ROF] 15†[2] D† G†1
+2cm FlaK 30 T LF [NT, 20†, 2 ROF, B10] T LF [NT, 20†, 2 ROF, B10] 15†[1] G†
+3.7cm FlaK 36 o. 37 T AP6 T AP6 16 B
+Bofors 40mm L/60 T AP6 LF [40†[1], 2 ROF] T AP6 LF [40†[1], 2 ROF] 16† G†1
+Bofors 75mm M29 T AP6 LF [75†[1], 1 ROF, B10†] T AP6 LF [75†[1], 1 ROF, B10†] 17 B D† G†1
+8.8cm FlaK 18 T AP6 LF [88†[1], 1 ROF, B10†] T AP6 LF [88†[1], 1 ROF, B10†] 17 B D† G†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1942.txt
new file mode 100644
index 0000000..a817967
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1942.txt
@@ -0,0 +1,40 @@
+=== ordnance/chinese/1942 ===
+
+Name Capabilities (effective) # Notes
+------------------------------ ------------------------------ ------------------------------ ------ --------------------------
+Type 27 Grenade Launcher 2PP Air Bursts NA† 2PP Air Bursts NA† 1† A
+Mortaio da 45 "Brixia" 4PP 4PP 2 A D†
+5cm leGrW 36 5PP 5PP 2 A
+50mm RM obr. 38 5PP 5PP 2 A
+Type 89 Heavy Grenade Launcher IR WP5 s5 4PP IR WP5 s5 4PP 2† A
+M2 60mm IR 5PP OBA† IR 5PP OBA† 3† A
+Stokes 3-in. NT QSU NT QSU 4 A E†
+8cm GrW 34 NT QSU IR s6 NT QSU IR s6 4 A E†
+82mm BM obr. 37 NT QSU IR s6 NT QSU IR s6 4 A E†
+M1 81mm NT QSU WP7 NT QSU WP7 5 A B
+M2 4.2-in. NT QSU WP9 NT QSU WP9 5† B
+3.7cm PaK 35/36 NT QSU NT QSU 6 E†
+M3A1 37mm NT QSU C7†[1] NT QSU C7†[1] 6† C†1
+37mm PP obr. 15R NT QSU h-d Low Ammo† NT QSU h-d Low Ammo† 7† B
+Cannone da 70/15 NT QSU Acq. NA† Low Ammo† h-d NT QSU Acq. NA† Low Ammo† h-d 7† A B
+7.5cm Krupp M08 NT QSU h-d AP5 s5 NT QSU h-d AP5 s5 8 A F†
+Obice da 75/13 NT QSU h-d NT QSU h-d 8 A D† F†1
+7.5cm leIG 18 NT QSU h-d NT QSU h-d 9† n/a
+76.2mm PP obr. 27 NT QSU AP6 s6 NT QSU AP6 s6 9†[1] D†
+M1A1 75mm Pack Howitzer NT QSU h-d C5†[1] WP7 NT QSU h-d C5†[1] WP7 10† A C †1
+7.7cm FK 16 NT QSU h-d AP6 s5 NT QSU h-d AP6 s5 11 F†
+76.2mm P obr. 02/30 NT QSU h-d AP6 s6 NT QSU h-d AP6 s6 11 D† F†1
+OQF 18-Pounder NT QSU h-d AP6 WP5 s6 NT QSU h-d AP6 WP5 s6 11 B
+10.5cm leFH 16 NT h-d s6 NT h-d s6 12† A
+Cannone da 105/28 NT AP5 s6 NT AP5 s6 12 F†
+M2A1 105mm Howitzer NT C5† WP7 s6 NT C5† WP7 s6 12 B C†
+122mm G obr. 10/30 NT h-d s6 NT h-d s6 13 B D†
+122mm G obr. 38 NT s6 NT s6 13 B D†
+Obice da 149/13 NT h-d[C]† WP6[B]† s5 NT h-d[C]† s5 14† n/a
+Oerlikon FF T LF [NT, 20†, 2 ROF, B10] T LF [NT, 20†, 2 ROF, B10] 15†[1] G†
+Cannone-mitra. da 20/65 T LF [NT, 20†[1], 2 ROF] T LF [NT, 20†[1], 2 ROF] 15†[2] D† G†1
+2cm FlaK 30 T LF [NT, 20†, 2 ROF, B10] T LF [NT, 20†, 2 ROF, B10] 15†[1] G†
+3.7cm FlaK 36 o. 37 T AP6 T AP6 16 B
+Bofors 40mm L/60 T AP6 LF [40†[1], 2 ROF] T AP6 LF [40†[1], 2 ROF] 16† G†1
+Bofors 75mm M29 T AP6 LF [75†[1], 1 ROF, B10†] T AP6 LF [75†[1], 1 ROF, B10†] 17 B D† G†1
+8.8cm FlaK 18 T AP6 LF [88†[1], 1 ROF, B10†] T AP6 LF [88†[1], 1 ROF, B10†] 17 B D† G†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1943.txt
new file mode 100644
index 0000000..cf5dbb4
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1943.txt
@@ -0,0 +1,40 @@
+=== ordnance/chinese/1943 ===
+
+Name Capabilities (effective) # Notes
+------------------------------ ------------------------------ ------------------------------ ------ --------------------------
+Type 27 Grenade Launcher 2PP Air Bursts NA† 2PP Air Bursts NA† 1† A
+Mortaio da 45 "Brixia" 4PP 4PP 2 A D†
+5cm leGrW 36 5PP 5PP 2 A
+50mm RM obr. 38 5PP 5PP 2 A
+Type 89 Heavy Grenade Launcher IR WP5 s5 4PP IR WP5 s5 4PP 2† A
+M2 60mm IR 5PP OBA† IR 5PP OBA† 3† A
+Stokes 3-in. NT QSU NT QSU 4 A E†
+8cm GrW 34 NT QSU IR s6 NT QSU IR s6 4 A E†
+82mm BM obr. 37 NT QSU IR s6 NT QSU IR s6 4 A E†
+M1 81mm NT QSU WP7 NT QSU WP7 5 A B
+M2 4.2-in. NT QSU WP9 NT QSU WP9 5† B
+3.7cm PaK 35/36 NT QSU NT QSU 6 E†
+M3A1 37mm NT QSU C7†[1] NT QSU C7†[1] 6† C†1
+37mm PP obr. 15R NT QSU h-d Low Ammo† NT QSU h-d Low Ammo† 7† B
+Cannone da 70/15 NT QSU Acq. NA† Low Ammo† h-d NT QSU Acq. NA† Low Ammo† h-d 7† A B
+7.5cm Krupp M08 NT QSU h-d AP5 s5 NT QSU h-d AP5 s5 8 A F†
+Obice da 75/13 NT QSU h-d NT QSU h-d 8 A D† F†1
+7.5cm leIG 18 NT QSU h-d NT QSU h-d 9† n/a
+76.2mm PP obr. 27 NT QSU AP6 s6 NT QSU AP6 s6 9†[1] D†
+M1A1 75mm Pack Howitzer NT QSU h-d C5†[1] WP7 NT QSU h-d C5†[1] WP7 10† A C †1
+7.7cm FK 16 NT QSU h-d AP6 s5 NT QSU h-d AP6 s5 11 F†
+76.2mm P obr. 02/30 NT QSU h-d AP6 s6 NT QSU h-d AP6 s6 11 D† F†1
+OQF 18-Pounder NT QSU h-d AP6 WP5 s6 NT QSU h-d AP6 WP5 s6 11 B
+10.5cm leFH 16 NT h-d s6 NT h-d s6 12† A
+Cannone da 105/28 NT AP5 s6 NT AP5 s6 12 F†
+M2A1 105mm Howitzer NT C5† WP7 s6 NT C5† WP7 s6 12 B C†
+122mm G obr. 10/30 NT h-d s6 NT h-d s6 13 B D†
+122mm G obr. 38 NT s6 NT s6 13 B D†
+Obice da 149/13 NT h-d[C]† WP6[B]† s5 NT h-d[C]† s5 14† n/a
+Oerlikon FF T LF [NT, 20†, 2 ROF, B10] T LF [NT, 20†, 2 ROF, B10] 15†[1] G†
+Cannone-mitra. da 20/65 T LF [NT, 20†[1], 2 ROF] T LF [NT, 20†[1], 2 ROF] 15†[2] D† G†1
+2cm FlaK 30 T LF [NT, 20†, 2 ROF, B10] T LF [NT, 20†, 2 ROF, B10] 15†[1] G†
+3.7cm FlaK 36 o. 37 T AP6 T AP6 16 B
+Bofors 40mm L/60 T AP6 LF [40†[1], 2 ROF] T AP6 LF [40†[1], 2 ROF] 16† G†1
+Bofors 75mm M29 T AP6 LF [75†[1], 1 ROF, B10†] T AP6 LF [75†[1], 1 ROF, B10†] 17 B D† G†1
+8.8cm FlaK 18 T AP6 LF [88†[1], 1 ROF, B10†] T AP6 LF [88†[1], 1 ROF, B10†] 17 B D† G†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1944.txt
new file mode 100644
index 0000000..26b0d38
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1944.txt
@@ -0,0 +1,40 @@
+=== ordnance/chinese/1944 ===
+
+Name Capabilities (effective) # Notes
+------------------------------ ------------------------------ ------------------------------ ------ --------------------------
+Type 27 Grenade Launcher 2PP Air Bursts NA† 2PP Air Bursts NA† 1† A
+Mortaio da 45 "Brixia" 4PP 4PP 2 A D†
+5cm leGrW 36 5PP 5PP 2 A
+50mm RM obr. 38 5PP 5PP 2 A
+Type 89 Heavy Grenade Launcher IR WP5 s5 4PP IR WP5 s5 4PP 2† A
+M2 60mm IR 5PP OBA† IR 5PP OBA† 3† A
+Stokes 3-in. NT QSU NT QSU 4 A E†
+8cm GrW 34 NT QSU IR s6 NT QSU IR s6 4 A E†
+82mm BM obr. 37 NT QSU IR s6 NT QSU IR s6 4 A E†
+M1 81mm NT QSU WP7 NT QSU WP7 5 A B
+M2 4.2-in. NT QSU WP9 NT QSU WP9 5† B
+3.7cm PaK 35/36 NT QSU NT QSU 6 E†
+M3A1 37mm NT QSU C7†[1] NT QSU C7†[1] 6† C†1
+37mm PP obr. 15R NT QSU h-d Low Ammo† NT QSU h-d Low Ammo† 7† B
+Cannone da 70/15 NT QSU Acq. NA† Low Ammo† h-d NT QSU Acq. NA† Low Ammo† h-d 7† A B
+7.5cm Krupp M08 NT QSU h-d AP5 s5 NT QSU h-d AP5 s5 8 A F†
+Obice da 75/13 NT QSU h-d NT QSU h-d 8 A D† F†1
+7.5cm leIG 18 NT QSU h-d NT QSU h-d 9† n/a
+76.2mm PP obr. 27 NT QSU AP6 s6 NT QSU AP6 s6 9†[1] D†
+M1A1 75mm Pack Howitzer NT QSU h-d C5†[1] WP7 NT QSU h-d C5†[1] WP7 10† A C †1
+7.7cm FK 16 NT QSU h-d AP6 s5 NT QSU h-d AP6 s5 11 F†
+76.2mm P obr. 02/30 NT QSU h-d AP6 s6 NT QSU h-d AP6 s6 11 D† F†1
+OQF 18-Pounder NT QSU h-d AP6 WP5 s6 NT QSU h-d AP6 WP5 s6 11 B
+10.5cm leFH 16 NT h-d s6 NT h-d s6 12† A
+Cannone da 105/28 NT AP5 s6 NT AP5 s6 12 F†
+M2A1 105mm Howitzer NT C5† WP7 s6 NT C5† WP7 s6 12 B C†
+122mm G obr. 10/30 NT h-d s6 NT h-d s6 13 B D†
+122mm G obr. 38 NT s6 NT s6 13 B D†
+Obice da 149/13 NT h-d[C]† WP6[B]† s5 NT h-d[C]† s5 14† n/a
+Oerlikon FF T LF [NT, 20†, 2 ROF, B10] T LF [NT, 20†, 2 ROF, B10] 15†[1] G†
+Cannone-mitra. da 20/65 T LF [NT, 20†[1], 2 ROF] T LF [NT, 20†[1], 2 ROF] 15†[2] D† G†1
+2cm FlaK 30 T LF [NT, 20†, 2 ROF, B10] T LF [NT, 20†, 2 ROF, B10] 15†[1] G†
+3.7cm FlaK 36 o. 37 T AP6 T AP6 16 B
+Bofors 40mm L/60 T AP6 LF [40†[1], 2 ROF] T AP6 LF [40†[1], 2 ROF] 16† G†1
+Bofors 75mm M29 T AP6 LF [75†[1], 1 ROF, B10†] T AP6 LF [75†[1], 1 ROF, B10†] 17 B D† G†1
+8.8cm FlaK 18 T AP6 LF [88†[1], 1 ROF, B10†] T AP6 LF [88†[1], 1 ROF, B10†] 17 B D† G†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1945.txt
new file mode 100644
index 0000000..8f142dd
--- /dev/null
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1945.txt
@@ -0,0 +1,40 @@
+=== ordnance/chinese/1945 ===
+
+Name Capabilities (effective) # Notes
+------------------------------ ------------------------------ ------------------------------ ------ --------------------------
+Type 27 Grenade Launcher 2PP Air Bursts NA† 2PP Air Bursts NA† 1† A
+Mortaio da 45 "Brixia" 4PP 4PP 2 A D†
+5cm leGrW 36 5PP 5PP 2 A
+50mm RM obr. 38 5PP 5PP 2 A
+Type 89 Heavy Grenade Launcher IR WP5 s5 4PP IR WP5 s5 4PP 2† A
+M2 60mm IR 5PP OBA† IR 5PP OBA† 3† A
+Stokes 3-in. NT QSU NT QSU 4 A E†
+8cm GrW 34 NT QSU IR s6 NT QSU IR s6 4 A E†
+82mm BM obr. 37 NT QSU IR s6 NT QSU IR s6 4 A E†
+M1 81mm NT QSU WP7 NT QSU WP7 5 A B
+M2 4.2-in. NT QSU WP9 NT QSU WP9 5† B
+3.7cm PaK 35/36 NT QSU NT QSU 6 E†
+M3A1 37mm NT QSU C7†[1] NT QSU C7†[1] 6† C†1
+37mm PP obr. 15R NT QSU h-d Low Ammo† NT QSU h-d Low Ammo† 7† B
+Cannone da 70/15 NT QSU Acq. NA† Low Ammo† h-d NT QSU Acq. NA† Low Ammo† h-d 7† A B
+7.5cm Krupp M08 NT QSU h-d AP5 s5 NT QSU h-d AP5 s5 8 A F†
+Obice da 75/13 NT QSU h-d NT QSU h-d 8 A D† F†1
+7.5cm leIG 18 NT QSU h-d NT QSU h-d 9† n/a
+76.2mm PP obr. 27 NT QSU AP6 s6 NT QSU AP6 s6 9†[1] D†
+M1A1 75mm Pack Howitzer NT QSU h-d C5†[1] WP7 NT QSU h-d C5†[1] WP7 10† A C †1
+7.7cm FK 16 NT QSU h-d AP6 s5 NT QSU h-d AP6 s5 11 F†
+76.2mm P obr. 02/30 NT QSU h-d AP6 s6 NT QSU h-d AP6 s6 11 D† F†1
+OQF 18-Pounder NT QSU h-d AP6 WP5 s6 NT QSU h-d AP6 WP5 s6 11 B
+10.5cm leFH 16 NT h-d s6 NT h-d s6 12† A
+Cannone da 105/28 NT AP5 s6 NT AP5 s6 12 F†
+M2A1 105mm Howitzer NT C5† WP7 s6 NT C5† WP7 s6 12 B C†
+122mm G obr. 10/30 NT h-d s6 NT h-d s6 13 B D†
+122mm G obr. 38 NT s6 NT s6 13 B D†
+Obice da 149/13 NT h-d[C]† WP6[B]† s5 NT h-d[C]† s5 14† n/a
+Oerlikon FF T LF [NT, 20†, 2 ROF, B10] T LF [NT, 20†, 2 ROF, B10] 15†[1] G†
+Cannone-mitra. da 20/65 T LF [NT, 20†[1], 2 ROF] T LF [NT, 20†[1], 2 ROF] 15†[2] D† G†1
+2cm FlaK 30 T LF [NT, 20†, 2 ROF, B10] T LF [NT, 20†, 2 ROF, B10] 15†[1] G†
+3.7cm FlaK 36 o. 37 T AP6 T AP6 16 B
+Bofors 40mm L/60 T AP6 LF [40†[1], 2 ROF] T AP6 LF [40†[1], 2 ROF] 16† G†1
+Bofors 75mm M29 T AP6 LF [75†[1], 1 ROF, B10†] T AP6 LF [75†[1], 1 ROF, B10†] 17 B D† G†1
+8.8cm FlaK 18 T AP6 LF [88†[1], 1 ROF, B10†] T AP6 LF [88†[1], 1 ROF, B10†] 17 B D† G†1