Backend (app-pfm-ocr-v2/backend): - Product/SKU scan feature complete: trained DINOv2 index (118 reference photos, 16 SKU classes) and YOLO classifier (83.3% top-1 val accuracy), fixed scripts/install-pipeline.sh (was missing ultralytics/torch), fully browser-verified end-to-end on /scan-pfm. Mobile m-scan-pfm page cancelled (Flutter app handles mobile; web UI is desktop-only for pipeline testing). - Fixed a real data-loss bug: Save Ground Truth (scan-pfm and the DO-flow's manual-label) was silently writing into the pfm-web-app container's ephemeral filesystem instead of the host, because /sources wasn't bind-mounted in docker-compose.yml. Added the mount, recovered an orphaned entry. - accounts.password is now bcrypt-hashed (bcryptjs, idempotent migration in db/init.ts) instead of plaintext; login route compares hashes. - /api/v1/documents/* (list, PUT, upload) now enforces real 401 auth, matching what the Flutter client already sends. The "classic" routes deliberately stay open — they're dev-only web UI with no login flow and won't exist in production. - OCR accuracy investigated end-to-end: real baseline is 95.10% overall (target met; accuracy_report.md was stale at 75.04%, now flagged). Fixed one genuine parser.ts bug (SO/DO field duplication in the global fallback regex); remaining gaps are OCR/layout-model limitations, not parser bugs. - Adopted a standalone copy of the fhanyuh/agents-settings e/n workflow scoped to backend/ (AGENTS.md Part A/B split, SKILLS.md, plans/, docs/), independent of the root copy which now covers Flutter only. - next-implementation.md deleted; content folded into backend/plans/next-enhancements.md for traceability. Root: - Adopted fhanyuh/agents-settings kit (AGENTS.md, SKILLS.md, plans/, docs/feature-list.md), scoped to the Flutter app only. - Pending documents queue now persists to Hive (lib/core/storage) instead of memory-only, surviving an app kill mid-upload. Removed backend_backup/ (stale Express/Prisma prototype, superseded by pfm-web-app) and the completed plans/next-enhancement-plan.md checklist. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
4161 lines
83 KiB
HTML
4161 lines
83 KiB
HTML
<title>Manifest Audit — AI OCR vs Ground Truth</title>
|
|
<style>
|
|
:root {
|
|
--paper: #F4F6F1;
|
|
--band: #E2EBDF;
|
|
--card: #FFFFFF;
|
|
--line: #C9D3C4;
|
|
--ink: #1E2622;
|
|
--ink-dim: #56635A;
|
|
--accent: #2B4C7E;
|
|
--accent-dim: #4A6A9C;
|
|
--good: #2F7D4F;
|
|
--good-bg: #E4F1E8;
|
|
--bad: #B23A32;
|
|
--bad-bg: #FBE8E6;
|
|
--warn: #B9791F;
|
|
--warn-bg: #FBF0DE;
|
|
--focus: #2B4C7E;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:root {
|
|
--paper: #121815;
|
|
--band: #1A2320;
|
|
--card: #171F1B;
|
|
--line: #33403A;
|
|
--ink: #E7EDE7;
|
|
--ink-dim: #9CAB9F;
|
|
--accent: #7FA6D9;
|
|
--accent-dim: #6089BE;
|
|
--good: #5FBE86;
|
|
--good-bg: #16301F;
|
|
--bad: #E2726A;
|
|
--bad-bg: #391B19;
|
|
--warn: #E0AA55;
|
|
--warn-bg: #362809;
|
|
--focus: #7FA6D9;
|
|
}
|
|
}
|
|
|
|
:root[data-theme="dark"] {
|
|
--paper: #121815;
|
|
--band: #1A2320;
|
|
--card: #171F1B;
|
|
--line: #33403A;
|
|
--ink: #E7EDE7;
|
|
--ink-dim: #9CAB9F;
|
|
--accent: #7FA6D9;
|
|
--accent-dim: #6089BE;
|
|
--good: #5FBE86;
|
|
--good-bg: #16301F;
|
|
--bad: #E2726A;
|
|
--bad-bg: #391B19;
|
|
--warn: #E0AA55;
|
|
--warn-bg: #362809;
|
|
--focus: #7FA6D9;
|
|
}
|
|
|
|
:root[data-theme="light"] {
|
|
--paper: #F4F6F1;
|
|
--band: #E2EBDF;
|
|
--card: #FFFFFF;
|
|
--line: #C9D3C4;
|
|
--ink: #1E2622;
|
|
--ink-dim: #56635A;
|
|
--accent: #2B4C7E;
|
|
--accent-dim: #4A6A9C;
|
|
--good: #2F7D4F;
|
|
--good-bg: #E4F1E8;
|
|
--bad: #B23A32;
|
|
--bad-bg: #FBE8E6;
|
|
--warn: #B9791F;
|
|
--warn-bg: #FBF0DE;
|
|
--focus: #2B4C7E;
|
|
}
|
|
|
|
* { box-sizing: border-box; }
|
|
|
|
body {
|
|
margin: 0;
|
|
background: var(--paper);
|
|
color: var(--ink);
|
|
font-family: ui-sans-serif, "Segoe UI", "Helvetica Neue", Arial, sans-serif;
|
|
line-height: 1.45;
|
|
-webkit-font-smoothing: antialiased;
|
|
}
|
|
|
|
.mono {
|
|
font-family: ui-monospace, "Cascadia Code", "SF Mono", Consolas, "Roboto Mono", monospace;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
a { color: var(--accent); }
|
|
|
|
:focus-visible {
|
|
outline: 2px solid var(--focus);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
.wrap {
|
|
max-width: 960px;
|
|
margin: 0 auto;
|
|
padding: 28px 20px 80px;
|
|
}
|
|
|
|
header.top {
|
|
padding-bottom: 20px;
|
|
border-bottom: 1px solid var(--line);
|
|
margin-bottom: 24px;
|
|
}
|
|
|
|
.eyebrow {
|
|
font-size: 11.5px;
|
|
font-weight: 600;
|
|
letter-spacing: 0.09em;
|
|
text-transform: uppercase;
|
|
color: var(--accent-dim);
|
|
margin: 0 0 8px;
|
|
}
|
|
|
|
h1 {
|
|
font-size: 27px;
|
|
font-weight: 700;
|
|
letter-spacing: -0.01em;
|
|
margin: 0 0 8px;
|
|
text-wrap: balance;
|
|
}
|
|
|
|
.lede {
|
|
color: var(--ink-dim);
|
|
font-size: 14.5px;
|
|
max-width: 62ch;
|
|
margin: 0;
|
|
}
|
|
|
|
.lede code {
|
|
font-family: ui-monospace, "Cascadia Code", "SF Mono", Consolas, monospace;
|
|
background: var(--band);
|
|
padding: 1px 5px;
|
|
border-radius: 3px;
|
|
font-size: 0.92em;
|
|
}
|
|
|
|
/* ---- Summary strip ---- */
|
|
|
|
.summary {
|
|
display: grid;
|
|
grid-template-columns: auto 1fr;
|
|
gap: 24px;
|
|
background: var(--card);
|
|
border: 1px solid var(--line);
|
|
border-radius: 10px;
|
|
padding: 22px 24px;
|
|
margin-bottom: 28px;
|
|
}
|
|
|
|
.headline-stat {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
padding-right: 24px;
|
|
border-right: 1px solid var(--line);
|
|
min-width: 132px;
|
|
}
|
|
|
|
.headline-stat .num {
|
|
font-size: 44px;
|
|
font-weight: 700;
|
|
letter-spacing: -0.02em;
|
|
line-height: 1;
|
|
font-family: ui-monospace, "Cascadia Code", "SF Mono", Consolas, monospace;
|
|
}
|
|
|
|
.headline-stat .label {
|
|
font-size: 12px;
|
|
color: var(--ink-dim);
|
|
margin-top: 6px;
|
|
}
|
|
|
|
.headline-stat .sub {
|
|
font-size: 12px;
|
|
color: var(--ink-dim);
|
|
margin-top: 2px;
|
|
}
|
|
|
|
.field-bars {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
gap: 10px 20px;
|
|
align-content: center;
|
|
}
|
|
|
|
.field-bar-row {
|
|
display: grid;
|
|
grid-template-columns: 78px 1fr 46px;
|
|
align-items: center;
|
|
gap: 8px;
|
|
font-size: 12.5px;
|
|
}
|
|
|
|
.field-bar-row .fname {
|
|
color: var(--ink-dim);
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.field-bar-row .track {
|
|
height: 6px;
|
|
background: var(--band);
|
|
border-radius: 3px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.field-bar-row .fill {
|
|
height: 100%;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.field-bar-row .pct {
|
|
font-family: ui-monospace, "Cascadia Code", "SF Mono", Consolas, monospace;
|
|
text-align: right;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.sev-good .fill { background: var(--good); }
|
|
.sev-good .pct { color: var(--good); }
|
|
.sev-warn .fill { background: var(--warn); }
|
|
.sev-warn .pct { color: var(--warn); }
|
|
.sev-bad .fill { background: var(--bad); }
|
|
.sev-bad .pct { color: var(--bad); }
|
|
|
|
/* ---- Toolbar ---- */
|
|
|
|
.toolbar {
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 5;
|
|
display: flex;
|
|
gap: 10px;
|
|
align-items: center;
|
|
background: var(--paper);
|
|
padding: 10px 0;
|
|
margin-bottom: 4px;
|
|
border-bottom: 1px solid var(--line);
|
|
}
|
|
|
|
.search {
|
|
flex: 1;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
background: var(--card);
|
|
border: 1px solid var(--line);
|
|
border-radius: 7px;
|
|
padding: 8px 12px;
|
|
}
|
|
|
|
.search svg { flex: none; color: var(--ink-dim); }
|
|
|
|
.search input {
|
|
border: none;
|
|
background: transparent;
|
|
color: var(--ink);
|
|
font-size: 13.5px;
|
|
width: 100%;
|
|
outline: none;
|
|
font-family: ui-monospace, "Cascadia Code", "SF Mono", Consolas, monospace;
|
|
}
|
|
|
|
.search input::placeholder { color: var(--ink-dim); }
|
|
|
|
.toggle {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
background: var(--card);
|
|
border: 1px solid var(--line);
|
|
border-radius: 7px;
|
|
padding: 8px 12px;
|
|
font-size: 13px;
|
|
cursor: pointer;
|
|
user-select: none;
|
|
color: var(--ink);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.toggle input { accent-color: var(--accent); width: 14px; height: 14px; }
|
|
|
|
.count {
|
|
font-size: 12px;
|
|
color: var(--ink-dim);
|
|
white-space: nowrap;
|
|
font-family: ui-monospace, "Cascadia Code", "SF Mono", Consolas, monospace;
|
|
}
|
|
|
|
/* ---- File cards ---- */
|
|
|
|
.files { margin-top: 18px; display: flex; flex-direction: column; gap: 10px; }
|
|
|
|
details.card {
|
|
background: var(--card);
|
|
border: 1px solid var(--line);
|
|
border-radius: 9px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
details.card[open] summary { border-bottom: 1px solid var(--line); }
|
|
|
|
summary {
|
|
list-style: none;
|
|
cursor: pointer;
|
|
padding: 13px 16px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
}
|
|
|
|
summary::-webkit-details-marker { display: none; }
|
|
|
|
summary .chevron {
|
|
flex: none;
|
|
color: var(--ink-dim);
|
|
transition: transform 0.15s ease;
|
|
}
|
|
|
|
details[open] summary .chevron { transform: rotate(90deg); }
|
|
|
|
summary .fname {
|
|
font-family: ui-monospace, "Cascadia Code", "SF Mono", Consolas, monospace;
|
|
font-size: 13px;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
|
|
.pill {
|
|
flex: none;
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
padding: 3px 9px;
|
|
border-radius: 99px;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.pill-good { background: var(--good-bg); color: var(--good); }
|
|
.pill-bad { background: var(--bad-bg); color: var(--bad); }
|
|
|
|
.card-body { padding: 4px 16px 18px; }
|
|
|
|
.subhead {
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
letter-spacing: 0.07em;
|
|
text-transform: uppercase;
|
|
color: var(--ink-dim);
|
|
margin: 14px 0 8px;
|
|
}
|
|
|
|
.table-scroll { overflow-x: auto; }
|
|
|
|
table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
font-size: 12.8px;
|
|
}
|
|
|
|
th {
|
|
text-align: left;
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
letter-spacing: 0.04em;
|
|
text-transform: uppercase;
|
|
color: var(--ink-dim);
|
|
padding: 6px 10px;
|
|
border-bottom: 1px solid var(--line);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
td {
|
|
padding: 7px 10px;
|
|
font-family: ui-monospace, "Cascadia Code", "SF Mono", Consolas, monospace;
|
|
white-space: nowrap;
|
|
max-width: 260px;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
td.wrap-cell { white-space: normal; }
|
|
|
|
td.label-cell {
|
|
font-family: ui-sans-serif, "Segoe UI", Arial, sans-serif;
|
|
color: var(--ink-dim);
|
|
font-size: 12.3px;
|
|
}
|
|
|
|
tr.band-row { background: var(--band); }
|
|
|
|
tr.mismatch td.val-cell { color: var(--bad); }
|
|
|
|
.status-icon { font-size: 12px; }
|
|
|
|
.empty-val { color: var(--ink-dim); font-style: italic; }
|
|
|
|
footer {
|
|
margin-top: 32px;
|
|
padding-top: 16px;
|
|
border-top: 1px solid var(--line);
|
|
font-size: 12px;
|
|
color: var(--ink-dim);
|
|
}
|
|
|
|
.no-results {
|
|
text-align: center;
|
|
padding: 40px 0;
|
|
color: var(--ink-dim);
|
|
font-size: 13.5px;
|
|
display: none;
|
|
}
|
|
|
|
@media (max-width: 640px) {
|
|
.summary { grid-template-columns: 1fr; }
|
|
.headline-stat { border-right: none; border-bottom: 1px solid var(--line); padding-right: 0; padding-bottom: 16px; }
|
|
}
|
|
</style>
|
|
|
|
<div class="wrap">
|
|
<header class="top">
|
|
<p class="eyebrow">Manifest Audit · Delivery Order OCR</p>
|
|
<h1>AI Extraction vs. Ground Truth — Side-by-Side</h1>
|
|
<p class="lede">37 delivery-order photos, field-by-field, generated live from <code>scripts/accuracy-check.mts --dump-json</code> (Layer 3 Final vs manual ground truth). Supersedes the old 14-image <code>comparison_side_by_side.md</code> run.</p>
|
|
</header>
|
|
|
|
<section class="summary">
|
|
<div class="headline-stat">
|
|
<span class="num">95.1%</span>
|
|
<span class="label">overall match rate</span>
|
|
<span class="sub">perfect on Customer, Store & Alamat (account-assigned, not OCR)</span>
|
|
</div>
|
|
<div class="field-bars" id="fieldBars"></div>
|
|
</section>
|
|
|
|
<div class="toolbar">
|
|
<div class="search">
|
|
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.3-4.3"/></svg>
|
|
<input id="searchBox" type="text" placeholder="Cari nama file..." aria-label="Cari nama file" />
|
|
</div>
|
|
<label class="toggle">
|
|
<input type="checkbox" id="onlyIssues" />
|
|
Hanya file bermasalah
|
|
</label>
|
|
<span class="count" id="resultCount"></span>
|
|
</div>
|
|
|
|
<div class="files" id="fileList"></div>
|
|
<p class="no-results" id="noResults">Tidak ada file yang cocok.</p>
|
|
|
|
<footer>
|
|
Sumber: <code class="mono">scripts/accuracy-check.mts --dump-json</code> terhadap 37 foto di <code class="mono">test-images/</code>, dijalankan live pada commit terkini. Store & Alamat kini di-assign per akun (<code class="mono">accounts.kode_toko → store_master</code>), bukan hasil OCR — lihat <code class="mono">accuracy_report.md</code> untuk detail arsitekturnya.
|
|
</footer>
|
|
</div>
|
|
|
|
<script>
|
|
const FIELD_STATS = [["PO Number",34,37],["SO Number",32,37],["DO Number",34,37],["Date",33,37],["Customer Name",37,37],["Plat Nomor",25,37],["Store Name",37,37],["Alamat",37,37],["Item kodeBarang",125,126],["Item namaBarang",120,126],["Item banyak",123,126],["Item jumlah",122,126]];
|
|
|
|
function severity(pct) {
|
|
if (pct >= 90) return "good";
|
|
if (pct >= 70) return "warn";
|
|
return "bad";
|
|
}
|
|
|
|
const barsEl = document.getElementById("fieldBars");
|
|
FIELD_STATS.forEach(([name, match, total]) => {
|
|
const pct = (match / total) * 100;
|
|
const sev = severity(pct);
|
|
const row = document.createElement("div");
|
|
row.className = "field-bar-row sev-" + sev;
|
|
row.innerHTML = `
|
|
<span class="fname">${name}</span>
|
|
<span class="track"><span class="fill" style="width:${pct}%"></span></span>
|
|
<span class="pct">${pct.toFixed(0)}%</span>
|
|
`;
|
|
barsEl.appendChild(row);
|
|
});
|
|
|
|
// field format: [label, aiValue, manualValue, match]
|
|
// item format: [sku, aiBanyak, manualBanyak, banyakMatch, aiJumlah, manualJumlah, jumlahMatch, aiNama, manualNama, namaMatch]
|
|
const FILES = [
|
|
{
|
|
"name": "do-001.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000230828",
|
|
"PO/26/0000230828",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691960321",
|
|
"1691960321",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659980277",
|
|
"1659980277",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"23 June 2026",
|
|
"23 June 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9427 UXT",
|
|
"B 9427 UXT",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PX HEAD OFFICE ANCOL",
|
|
"PX HEAD OFFICE ANCOL",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11310014",
|
|
"2 KRG",
|
|
"2 KRG",
|
|
true,
|
|
"40 PC",
|
|
"40 PC",
|
|
true,
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310024",
|
|
"2 KRG",
|
|
"2 KRG",
|
|
true,
|
|
"40 PC",
|
|
"40 PC",
|
|
true,
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
true
|
|
],
|
|
[
|
|
"11620056",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"SBL (FILLET PAHA) 1 KG(*)",
|
|
"SBL (FILLET PAHA) 1 KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11690053",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"SBB (FILLET DADA )1 KG(*)",
|
|
"SBB (FILLET DADA )1 KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11720055",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"FULL WING FROZ PACK 1 KG(*)",
|
|
"FULL WING FROZ PACK 1 KG(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-002.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000178435",
|
|
"PO/26/0000178435",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691908676",
|
|
"1691908676",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659932080",
|
|
"1659932080",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"15 May 2026",
|
|
"15 May 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9723 CXS",
|
|
"B 9723 CXS",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM TAKTAKAN SERANG",
|
|
"PM TAKTAKAN SERANG",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. RAYA TAKTAKAN NO. 1 G, KEL. LONTAR BARU, KEC. SERANG, SERANG",
|
|
"JL. RAYA TAKTAKAN NO. 1 G, KEL. LONTAR BARU, KEC. SERANG, SERANG",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"13012205",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"15 PAC",
|
|
"15 PAC",
|
|
true,
|
|
"ASIMO SOSIS AYAM KOMBINASI 375 GR (PAC)",
|
|
"ASIMO SOSIS AYAM KOMBINASI 375 GR (PAC)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-003.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000241938",
|
|
"PO/26/0000241938",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691972227",
|
|
"1691972227",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659990561",
|
|
"1659990561",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"30 June 2026",
|
|
"30 June 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9257 JXR",
|
|
"B 9257 JXR",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PX HEAD OFFICE ANCOL",
|
|
"PX HEAD OFFICE ANCOL",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"21002601",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"6 PAC",
|
|
"6 PAC",
|
|
true,
|
|
"Prima Nasi Spicy Chick Sambal Geprek COPY",
|
|
"",
|
|
false
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-004.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000241938",
|
|
"PO/26/0000241938",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691972227",
|
|
"1691972227",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659990561",
|
|
"1659990561",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"30 June 2026",
|
|
"30 June 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9257 JXR",
|
|
"B 9257 JXR",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PX HEAD OFFICE ANCOL",
|
|
"PX HEAD OFFICE ANCOL",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"21002601",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"6 PAC",
|
|
"6 PAC",
|
|
true,
|
|
"Prima Nasi Spicy Chick Sambal Geprek COPY",
|
|
"",
|
|
false
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-005.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000238723",
|
|
"PO/26/0000238723",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"Not Found",
|
|
"1691969268",
|
|
false
|
|
],
|
|
[
|
|
"DO Number",
|
|
"Not Found",
|
|
"1659987802",
|
|
false
|
|
],
|
|
[
|
|
"Date",
|
|
"Not Found",
|
|
"27 June 2026",
|
|
false
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9715 UXU",
|
|
"B 9715 UXU",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PX HEAD OFFICE ANCOL",
|
|
"PX HEAD OFFICE ANCOL",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11310014",
|
|
"3 KRG",
|
|
"3 KRG",
|
|
true,
|
|
"60 PC",
|
|
"60 PC",
|
|
true,
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310024",
|
|
"2 KRG",
|
|
"2 KRG",
|
|
true,
|
|
"40 PC",
|
|
"40 PC",
|
|
true,
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
true
|
|
],
|
|
[
|
|
"11660050",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"PAHA BAWAH (1 KG)(*)",
|
|
"PAHA BAWAH (1 KG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11690053",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"SBB (FILLET DADA )1 KG(*)",
|
|
"SBB (FILLET DADA )1 KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11720055",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"FULL WING FROZ PACK 1 KG(*)",
|
|
"FULL WING FROZ PACK 1 KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11750050",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"FILLET MITRA 1 KG(*)",
|
|
"FILLET MITRA 1 KG(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-006.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000241302",
|
|
"PO/26/0000241302",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691972284",
|
|
"1691972284",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659990583",
|
|
"1659990583",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"30 June 2026",
|
|
"30 June 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"(empty)",
|
|
"B 9256 JXR",
|
|
false
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PX HEAD OFFICE ANCOL",
|
|
"PX HEAD OFFICE ANCOL",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"12010509",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"CHAMP CRUNCHY NUGGET 450 GR/PAC",
|
|
"CHAMP CRUNCHY NUGGET 450 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12010512",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"6 PAC",
|
|
"6 PAC",
|
|
true,
|
|
"CHAMP NUGGET AYAM 900 GR/PAC",
|
|
"CHAMP NUGGET AYAM 900 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12010519",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"6 PAC",
|
|
"6 PAC",
|
|
true,
|
|
"CHAMP NUGGET STICK 900 GR/PAC",
|
|
"CHAMP NUGGET STICK 900 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12012501",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"20 PAC",
|
|
"20 PAC",
|
|
true,
|
|
"AKUMO CHICKEN NAGET 250 GR",
|
|
"AKUMO CHICKEN NAGET 250 GR",
|
|
true
|
|
],
|
|
[
|
|
"12012503",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"5 PAC",
|
|
"5 PAC",
|
|
true,
|
|
"AKUMO CHICKEN NUGGET 1000 GR",
|
|
"AKUMO CHICKEN NUGGET 1000 GR",
|
|
true
|
|
],
|
|
[
|
|
"13010116",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"20 PAC",
|
|
"20 PAC",
|
|
true,
|
|
"FIESTA SSG ORIGINAL 300 GR",
|
|
"FIESTA SSG ORIGINAL 300 GR",
|
|
true
|
|
],
|
|
[
|
|
"13010514",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"CHAMP CHICK SSG 1000 GR",
|
|
"CHAMP CHICK SSG 1000 GR",
|
|
true
|
|
],
|
|
[
|
|
"13030502",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"CHAMP CHICK MEATBALL 500 GR",
|
|
"CHAMP CHICK MEATBALL 500 GR",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-007.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000241302",
|
|
"PO/26/0000241302",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691972284",
|
|
"1691972284",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659990583",
|
|
"1659990583",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"30 June 2026",
|
|
"30 June 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9256 JXR",
|
|
"B 9256 JXR",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PX HEAD OFFICE ANCOL",
|
|
"PX HEAD OFFICE ANCOL",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"15040101",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA BATTER COATED 500 GR",
|
|
"FIESTA BATTER COATED 500 GR",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-008.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000170727",
|
|
"PO/26/0000190929",
|
|
false
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1071721209",
|
|
"1691921200",
|
|
false
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1057745004",
|
|
"1659943004",
|
|
false
|
|
],
|
|
[
|
|
"Date",
|
|
"25 May 2026",
|
|
"25 May 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"(empty)",
|
|
"B 9536 UCO",
|
|
false
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM MUSTIKA MEDIA",
|
|
"PM MUSTIKA MEDIA",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"RUKO GRAHA MUSTIKA MEDIA, JL. KP LUBANG BUAYA, RT.001, RW.003, KEL. LUBANG BUAYA, KEC. SETU, BEKASI 17320",
|
|
"RUKO GRAHA MUSTIKA MEDIA, JL. KP LUBANG BUAYA, RT.001, RW.003, KEL. LUBANG BUAYA, KEC. SETU, BEKASI 17320",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"13030502",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"CHAMP CHICK MEATBALL 500 GR",
|
|
"CHAMP CHICK MEATBALL 500 GR",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-009.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"Not Found",
|
|
"PO/26/0000241938",
|
|
false
|
|
],
|
|
[
|
|
"SO Number",
|
|
"Not Found",
|
|
"1691972227",
|
|
false
|
|
],
|
|
[
|
|
"DO Number",
|
|
"Not Found",
|
|
"1659990561",
|
|
false
|
|
],
|
|
[
|
|
"Date",
|
|
"30 June 2026",
|
|
"30 June 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9257 JXR",
|
|
"B 9257 JXR",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PX HEAD OFFICE ANCOL",
|
|
"PX HEAD OFFICE ANCOL",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"21002601",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"6 PAC",
|
|
"6 PAC",
|
|
true,
|
|
"Prima Nasi Spicy Chick Sambal Geprek COPY",
|
|
"",
|
|
false
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-010.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000241303",
|
|
"PO/26/0000241303",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691972285",
|
|
"1691972285",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659990584",
|
|
"1659990584",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"30 June 2026",
|
|
"30 June 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"(empty)",
|
|
"B 9256 JXR",
|
|
false
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PX HEAD OFFICE ANCOL",
|
|
"PX HEAD OFFICE ANCOL",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"21010104",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"6 PAC",
|
|
"6 PAC",
|
|
true,
|
|
"NEW FIESTA BEEF RENDANG W RICE 320GR (PAC)",
|
|
"NEW FIESTA BEEF RENDANG W RICE 320GR (PAC)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-011.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000241304",
|
|
"PO/26/0000241304",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"2271289510",
|
|
"2271289510",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"2272290022",
|
|
"2272290022",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"30 June 2026",
|
|
"30 June 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"(empty)",
|
|
"B 9836 UCH",
|
|
false
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PX HEAD OFFICE ANCOL",
|
|
"PX HEAD OFFICE ANCOL",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11048006",
|
|
"2 BOX",
|
|
"2 BOX",
|
|
true,
|
|
"30 PAC",
|
|
"30 PAC",
|
|
true,
|
|
"BEBEK PARTING-NEW(*)",
|
|
"",
|
|
false
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-012.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000241304",
|
|
"PO/26/0000241304",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"2271289510",
|
|
"2271289510",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"2272290022",
|
|
"2272290022",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"30 June 2026",
|
|
"30 June 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"(empty)",
|
|
"B 9836 UCH",
|
|
false
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PX HEAD OFFICE ANCOL",
|
|
"PX HEAD OFFICE ANCOL",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11048000",
|
|
"2 BOX",
|
|
"2 BOX",
|
|
true,
|
|
"30 PAC",
|
|
"30 PAC",
|
|
true,
|
|
"PARTING 150 - 160 GR FRZ PACK",
|
|
"",
|
|
false
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-013.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000230199",
|
|
"PO/26/0000230199",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691960321",
|
|
"1691960321",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659980277",
|
|
"1659980277",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"23 June 2026",
|
|
"23 June 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9427 UXT",
|
|
"B 9427 UXT",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PX HEAD OFFICE ANCOL",
|
|
"PX HEAD OFFICE ANCOL",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11310014",
|
|
"2 KRG",
|
|
"2 KRG",
|
|
true,
|
|
"40 PC",
|
|
"40 PC",
|
|
true,
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310024",
|
|
"2 KRG",
|
|
"2 KRG",
|
|
true,
|
|
"40 PC",
|
|
"40 PC",
|
|
true,
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
true
|
|
],
|
|
[
|
|
"11620056",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"SBL (FILLET PAHA) 1 KG(*)",
|
|
"SBL (FILLET PAHA) 1 KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11690053",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"SBB (FILLET DADA )1 KG(*)",
|
|
"SBB (FILLET DADA )1 KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11720055",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"FULL WING FROZ PACK 1 KG(*)",
|
|
"FULL WING FROZ PACK 1 KG(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-014.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000241301",
|
|
"PO/26/0000241301",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691972419",
|
|
"1691972419",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659990664",
|
|
"1659990664",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"30 June 2026",
|
|
"30 June 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"(empty)",
|
|
"B 9256 JXR",
|
|
false
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PX HEAD OFFICE ANCOL",
|
|
"PX HEAD OFFICE ANCOL",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
"JL. ANCOL BARAT VIII/1 KEL. ANCOL, KEC. PADEMANGAN JAKARTA UTARA, DKI JAKARTA",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11140062",
|
|
"1 KRG",
|
|
"1 KRG",
|
|
true,
|
|
"20 PAC",
|
|
"20 PAC",
|
|
true,
|
|
"AMPELA 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
"AMPELA 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11150064",
|
|
"1 KRG",
|
|
"1 KRG",
|
|
true,
|
|
"20 PAC",
|
|
"20 PAC",
|
|
true,
|
|
"HATI 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
"HATI 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310014",
|
|
"3 KRG",
|
|
"3 KRG",
|
|
true,
|
|
"60 PC",
|
|
"60 PC",
|
|
true,
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11600053",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"BONELESS LEG FROZEN 1 KG(*)",
|
|
"BONELESS LEG FROZEN 1 KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11650053",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"PAHA ATAS 1 KG(*)",
|
|
"PAHA ATAS 1 KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11750050",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"FILLET MITRA 1 KG(*)",
|
|
"FILLET MITRA 1 KG(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-015.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000150175",
|
|
"PO/26/0000150175",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691879196",
|
|
"1691879196",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659905109",
|
|
"1659905109",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"23 April 2026",
|
|
"23 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9948 VCC",
|
|
"B 9948 VCC",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM PANDU RAYA",
|
|
"PM PANDU RAYA",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. PANDU RAYA/ H. ACHMAD ADNAWIJAYA NO. 68, RT. 001, RW. 015, KEL. TEGALGUNDIL, KEC. BOGOR UTARA, BOGOR",
|
|
"JL. PANDU RAYA/ H. ACHMAD ADNAWIJAYA NO. 68, RT. 001, RW. 015, KEL. TEGALGUNDIL, KEC. BOGOR UTARA, BOGOR",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"17210109",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"8 PAC",
|
|
"8 PAC",
|
|
true,
|
|
"FIESTA RTS B/BULGOGI 300GR/PAC",
|
|
"FIESTA RTS B/BULGOGI 300GR/PAC",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-016.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000142266",
|
|
"PO/26/0000142266",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691871022",
|
|
"1691871022",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659897809",
|
|
"1659897809",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"17 April 2026",
|
|
"17 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9599 CXS",
|
|
"B 9599 CXS",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM NEW BINTARO SEKTOR 5",
|
|
"PM NEW BINTARO SEKTOR 5",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. BINTARO UTAMA RAYA 5 BLOK EA NO 17, RT.001, RW.011, KEL. JURANGMANGGU TIMUR, KEC. PONDOK AREN, KOTA TANGERANG SELATAN 15222",
|
|
"JL. BINTARO UTAMA RAYA 5 BLOK EA NO 17, RT.001, RW.011, KEL. JURANGMANGGU TIMUR, KEC. PONDOK AREN, KOTA TANGERANG SELATAN 15222",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11110074",
|
|
"1 KRG",
|
|
"1 KRG",
|
|
true,
|
|
"20 PAC",
|
|
"20 PAC",
|
|
true,
|
|
"CEKER 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
"CEKER 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310021",
|
|
"1 KRG",
|
|
"1 KRG",
|
|
true,
|
|
"20 PC",
|
|
"20 PC",
|
|
true,
|
|
"AYAM SIZE BESAR (B) FROZ (1-1.1)KG/PC(*)",
|
|
"AYAM SIZE BESAR (B) FROZ (1-1.1)KG/PC(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-017.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000142693",
|
|
"PO/26/0000142693",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691870689",
|
|
"1691870689",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659897396",
|
|
"1659897396",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"Not Found",
|
|
"17 April 2026",
|
|
false
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9254 SCG",
|
|
"B 9254 SCG",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM TAMAN DUTA CIBODAS",
|
|
"PM TAMAN DUTA CIBODAS",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"PERUM TAMAN CIBODAS, JL. DUTA RAYA BLOK K1 NO. 20, RT. 007, RW. 006, KEL. SANGIANG JAYA, KEC. PERIUK, TANGERANG",
|
|
"PERUM TAMAN CIBODAS, JL. DUTA RAYA BLOK K1 NO. 20, RT. 007, RW. 006, KEL. SANGIANG JAYA, KEC. PERIUK, TANGERANG",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11310024",
|
|
"2 KRG",
|
|
"2 KRG",
|
|
true,
|
|
"40 PC",
|
|
"40 PC",
|
|
true,
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
true
|
|
],
|
|
[
|
|
"11640053",
|
|
"10 BOX",
|
|
"10 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"PAHA UTUH (1 KG)(*)",
|
|
"PAHA UTUH (1 KG)(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-018.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000137547",
|
|
"PO/26/0000137547",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691865548",
|
|
"1691865548",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659892421",
|
|
"1659892421",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"14 April 2026",
|
|
"14 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9053 VCF",
|
|
"B 9053 VCF",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM SASMITA",
|
|
"PM SASMITA",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. KENAIBAN RT. 002, RW. 002, KEL. PABUARAN, KEC. KARAWACI, TANGERANG",
|
|
"JL. KENAIBAN RT. 002, RW. 002, KEL. PABUARAN, KEC. KARAWACI, TANGERANG",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11310014",
|
|
"3 KRG",
|
|
"3 KRG",
|
|
true,
|
|
"60 PC",
|
|
"60 PC",
|
|
true,
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310024",
|
|
"7 KRG",
|
|
"7 KRG",
|
|
true,
|
|
"140 PC",
|
|
"140 PC",
|
|
true,
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
true
|
|
],
|
|
[
|
|
"11710051",
|
|
"10 BOX",
|
|
"10 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"DADA UTUH (1 KG)(*)",
|
|
"DADA UTUH (1 KG)(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-019.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000131178",
|
|
"PO/26/0000131178",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691859106",
|
|
"1691859106",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659886692",
|
|
"1659886692",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"09 April 2026",
|
|
"09 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9260 BXT",
|
|
"B 9260 BXT",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM SALAM RAYA",
|
|
"PM SALAM RAYA",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL.SALAM RAYA, RT.005, RW.003, KEL. SUKABUMI UTARA, KEC. KEBON JERUK, JAKARTA BARAT 11540",
|
|
"JL.SALAM RAYA, RT.005, RW.003, KEL. SUKABUMI UTARA, KEC. KEBON JERUK, JAKARTA BARAT 11540",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"12010112",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA CHICKEN NUGGET 400 GR/PAC",
|
|
"FIESTA CHICKEN NUGGET 400 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12010124",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA CHEESY CHIC W/BROCCOLI 400 GR/PAC",
|
|
"FIESTA CHEESY CHIC W/BROCCOLI 400 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12010509",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"CHAMP CRUNCHY NUGGET 450 GR/PAC",
|
|
"CHAMP CRUNCHY NUGGET 450 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12010521",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"CHAMP NUGGET HOTZZ LEVEL 5 450 GR/PAC",
|
|
"CHAMP NUGGET HOTZZ LEVEL 5 450 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12010606",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"25 PAC",
|
|
"25 PAC",
|
|
true,
|
|
"CHAMP CRUNCHY NUGGET 225 GR/PAC",
|
|
"CHAMP CRUNCHY NUGGET 225 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12030101",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA STIKIE 400 GR/PAC",
|
|
"FIESTA STIKIE 400 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"13010514",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"CHAMP CHICK SSG 1000 GR",
|
|
"CHAMP CHICK SSG 1000 GR",
|
|
true
|
|
],
|
|
[
|
|
"13070502",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"24 PAC",
|
|
"24 PAC",
|
|
true,
|
|
"CHAMP BEEF SSG SERBAGUNA 375GR",
|
|
"CHAMP BEEF SSG SERBAGUNA 375GR",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-020.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000140625",
|
|
"PO/26/0000140625",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691868563",
|
|
"1691868563",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659895333",
|
|
"1659895333",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"16 April 2026",
|
|
"16 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9365 AI",
|
|
"B 9365 AI",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM REMPOA",
|
|
"PM REMPOA",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. REMPOA RAYA NO. 08, RT. 004, RW. 013, KEL. BINTARO, KEC. PESANGGRAHAN, JAKARTA SELATAN",
|
|
"JL. REMPOA RAYA NO. 08, RT. 004, RW. 013, KEL. BINTARO, KEC. PESANGGRAHAN, JAKARTA SELATAN",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11140062",
|
|
"20 KRG",
|
|
"20 KRG",
|
|
true,
|
|
"20 PAC",
|
|
"20 PAC",
|
|
true,
|
|
"AMPELA 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
"AMPELA 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310014",
|
|
"5 KRG",
|
|
"5 KRG",
|
|
true,
|
|
"100 PC",
|
|
"100 PC",
|
|
true,
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310024",
|
|
"2 KRG",
|
|
"2 KRG",
|
|
true,
|
|
"40 PC",
|
|
"40 PC",
|
|
true,
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
true
|
|
],
|
|
[
|
|
"11660050",
|
|
"10 BOX",
|
|
"10 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"PAHA BAWAH (1 KG)(*)",
|
|
"PAHA BAWAH (1 KG)(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-021.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000140731",
|
|
"PO/26/0000140731",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691869400",
|
|
"1691869400",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659896184",
|
|
"1659896184",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"16 April 2026",
|
|
"16 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"(empty)",
|
|
"B 9310 BXT",
|
|
false
|
|
],
|
|
[
|
|
"Store Name",
|
|
"MOTHER STORE - PM WARUNG JATI TIMUR RAYA",
|
|
"MOTHER STORE - PM WARUNG JATI TIMUR RAYA",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. WARUNG JATI TIMUR NO.26, RT.007, RW.004, KEL. KALIBATA, KEC. PANCORAN, JAKARTA SELATAN 12740",
|
|
"JL. WARUNG JATI TIMUR NO.26, RT.007, RW.004, KEL. KALIBATA, KEC. PANCORAN, JAKARTA SELATAN 12740",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"12010111",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA CRISPY BUBBLE 400 GR/PAC",
|
|
"FIESTA CRISPY BUBBLE 400 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12010509",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"CHAMP CRUNCHY NUGGET 450 GR/PAC",
|
|
"CHAMP CRUNCHY NUGGET 450 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12010511",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"CHAMP NUGGET AYAM 450 GR/PAC",
|
|
"CHAMP NUGGET AYAM 450 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12010512",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"6 PAC",
|
|
"6 PAC",
|
|
true,
|
|
"CHAMP NUGGET AYAM 900 GR/PAC",
|
|
"CHAMP NUGGET AYAM 900 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12010606",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"25 PAC",
|
|
"25 PAC",
|
|
true,
|
|
"CHAMP CRUNCHY NUGGET 225 GR/PAC",
|
|
"CHAMP CRUNCHY NUGGET 225 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12012202",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"5 PAC",
|
|
"5 PAC",
|
|
true,
|
|
"ASIMO NUGGET KOMBINASI 1 KG/PAC",
|
|
"ASIMO NUGGET KOMBINASI 1 KG/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12030101",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA STIKIE 400 GR/PAC",
|
|
"FIESTA STIKIE 400 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12060104",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA KARAGE 400 GR/PAC",
|
|
"FIESTA KARAGE 400 GR/PAC",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-022.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000172403",
|
|
"PO/26/0000172403",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691903313",
|
|
"1691903313",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659927197",
|
|
"1659927197",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"11 May 2026",
|
|
"11 May 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9683 VCF",
|
|
"B 9683 VCF",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM RAWA BUNTU",
|
|
"PM RAWA BUNTU",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. RAWA BUNTU UTARA BLOK UA NO. 16, RT. 002, RW. 006, KEL. RAWA BUNTU, KEC. SERPONG, TANGERANG SELATAN",
|
|
"JL. RAWA BUNTU UTARA BLOK UA NO. 16, RT. 002, RW. 006, KEL. RAWA BUNTU, KEC. SERPONG, TANGERANG SELATAN",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"12012501",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"20 PAC",
|
|
"20 PAC",
|
|
true,
|
|
"AKUMO CHICKEN NAGET 250 GR",
|
|
"AKUMO CHICKEN NAGET 250 GR",
|
|
true
|
|
],
|
|
[
|
|
"12030403",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"GOLDEN FIESTA STIKIE W/ SWEET CHILLI SAUCE 500GR",
|
|
"GOLDEN FIESTA STIKIE W/ SWEET CHILLI SAUCE 500GR",
|
|
true
|
|
],
|
|
[
|
|
"15010101",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA SHOESTRING 500 GR",
|
|
"FIESTA SHOESTRING 500 GR",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-023.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000164942",
|
|
"PO/26/0000164942",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691895167",
|
|
"1691895167",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659919748",
|
|
"1659919748",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"05 May 2026",
|
|
"05 May 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9042 VCC",
|
|
"B 9042 VCC",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"MOTHER STORE - PM WARUNG JATI TIMUR RAYA",
|
|
"MOTHER STORE - PM WARUNG JATI TIMUR RAYA",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. WARUNG JATI TIMUR NO.26, RT.007, RW.004, KEL. KALIBATA, KEC. PANCORAN, JAKARTA SELATAN 12740",
|
|
"JL. WARUNG JATI TIMUR NO.26, RT.007, RW.004, KEL. KALIBATA, KEC. PANCORAN, JAKARTA SELATAN 12740",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"12010111",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA CRISPY BUBBLE 400 GR/PAC",
|
|
"FIESTA CRISPY BUBBLE 400 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12010129",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA CHEESY BOMBS CHICKEN NUGGET 400 GR",
|
|
"FIESTA CHEESY BOMBS CHICKEN NUGGET 400 GR",
|
|
true
|
|
],
|
|
[
|
|
"12010606",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"25 PAC",
|
|
"25 PAC",
|
|
true,
|
|
"CHAMP CRUNCHY NUGGET 225 GR/PAC",
|
|
"CHAMP CRUNCHY NUGGET 225 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12060104",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA KARAGE 400 GR/PAC",
|
|
"FIESTA KARAGE 400 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"15040102",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA BATTER COATED 1000 GR",
|
|
"FIESTA BATTER COATED 1000 GR",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-024.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000166040",
|
|
"PO/26/0000166040",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691895765",
|
|
"1691895765",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659920402",
|
|
"1659920402",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"06 May 2026",
|
|
"06 May 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9260 VCF",
|
|
"B 9260 VCF",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM PASAR PARUNG BOGOR",
|
|
"PM PASAR PARUNG BOGOR",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. TULANG KUNING - PASAR PARUNG DESA WANO, RT.001, RW.005, KEL. WARU, KEC. PARUNG, BOGOR 16330",
|
|
"JL. TULANG KUNING - PASAR PARUNG DESA WANO, RT.001, RW.005, KEL. WARU, KEC. PARUNG, BOGOR 16330",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11310013",
|
|
"3 KRG",
|
|
"3 KRG",
|
|
true,
|
|
"90 PC",
|
|
"90 PC",
|
|
true,
|
|
"AYAM SIZE1 FROZEN (0.75-0.8) KG(*)",
|
|
"AYAM SIZE1 FROZEN (0.75-0.8) KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310014",
|
|
"3 KRG",
|
|
"3 KRG",
|
|
true,
|
|
"60 PC",
|
|
"60 PC",
|
|
true,
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310021",
|
|
"5 KRG",
|
|
"5 KRG",
|
|
true,
|
|
"100 PC",
|
|
"100 PC",
|
|
true,
|
|
"AYAM SIZE BESAR (B) FROZ (1-1.1)KG/PC(*)",
|
|
"AYAM SIZE BESAR (B) FROZ (1-1.1)KG/PC(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310024",
|
|
"10 KRG",
|
|
"10 KRG",
|
|
true,
|
|
"200 PC",
|
|
"200 PC",
|
|
true,
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-025.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000166510",
|
|
"PO/26/0000166510",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691896671",
|
|
"1691896671",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659921089",
|
|
"1659921089",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"Not Found",
|
|
"06 May 2026",
|
|
false
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"(empty)",
|
|
"B 9899 CXR",
|
|
false
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM KELAPA DUA KARAWACI",
|
|
"PM KELAPA DUA KARAWACI",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"RUKO SENTRA NIAGA KELAPA II / R 9, KEL. KELAPA DUA, KEC. KELAPA DUA, TANGERANG",
|
|
"RUKO SENTRA NIAGA KELAPA II / R 9, KEL. KELAPA DUA, KEC. KELAPA DUA, TANGERANG",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11310014",
|
|
"5 KRG",
|
|
"5 KRG",
|
|
true,
|
|
"100 PC",
|
|
"100 PC",
|
|
true,
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310018",
|
|
"1 KRG",
|
|
"1 KRG",
|
|
true,
|
|
"30 PC",
|
|
"30 PC",
|
|
true,
|
|
"AYAM SIZE 1 PR FROZEN(*)",
|
|
"AYAM SIZE1 FROZEN (0.75-0.8) KG(*)",
|
|
false
|
|
],
|
|
[
|
|
"11310024",
|
|
"5 KRG",
|
|
"5 KRG",
|
|
true,
|
|
"100 PC",
|
|
"100 PC",
|
|
true,
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
true
|
|
],
|
|
[
|
|
"11640053",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"PAHA UTUH (1 KG)(*)",
|
|
"PAHA UTUH (1 KG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11660050",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"PAHA BAWAH (1 KG)(*)",
|
|
"PAHA BAWAH (1 KG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11710051",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"DADA UTUH (1 KG)(*)",
|
|
"DADA UTUH (1 KG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11750050",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"FILLET MITRA 1 KG(*)",
|
|
"FILLET MITRA 1 KG(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-026.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000166127",
|
|
"PO/26/0000166127",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1659920441",
|
|
"1691895813",
|
|
false
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659920441",
|
|
"1659920441",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"Not Found",
|
|
"06 May 2026",
|
|
false
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9417 VOC",
|
|
"B 9417 VCC",
|
|
false
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM PANORAMA BALI RESIDENCE BGR",
|
|
"PM PANORAMA BALI RESIDENCE BGR",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"PANORAMA BALI RESIDENCE B NO 16, KEL. PUTAT NUTUG, KEC. CISEENG, KAB. BOGOR 16120",
|
|
"PANORAMA BALI RESIDENCE B NO 16, KEL. PUTAT NUTUG, KEC. CISEENG, KAB. BOGOR 16120",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11140062",
|
|
"1 KRG",
|
|
"1 KRG",
|
|
true,
|
|
"20 PAC",
|
|
"20 PAC",
|
|
true,
|
|
"AMPELA 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
"AMPELA 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310014",
|
|
"4 KRG",
|
|
"4 KRG",
|
|
true,
|
|
"80 PC",
|
|
"80 PC",
|
|
true,
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310024",
|
|
"20 KRG",
|
|
"20 KRG",
|
|
true,
|
|
"400 PC",
|
|
"400 PC",
|
|
true,
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
true
|
|
],
|
|
[
|
|
"11660050",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"PAHA BAWAH (1 KG)(*)",
|
|
"PAHA BAWAH (1 KG)(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-027.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000168198",
|
|
"PO/26/0000168198",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691898090",
|
|
"1691898090",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659922449",
|
|
"1659922449",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"07 May 2026",
|
|
"07 May 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9259 BCU",
|
|
"B 9259 BCU",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM KARANG BOLONG SERANG",
|
|
"PM KARANG BOLONG SERANG",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. RAYA KARANG BOLONG BANDULU (KP SEMPUR) NO.22, RT.004, RW.001, KEL. BANDULU, KEC. ANYAR, KAB. SERANG 42166",
|
|
"JL. RAYA KARANG BOLONG BANDULU (KP SEMPUR) NO.22, RT.004, RW.001, KEL. BANDULU, KEC. ANYAR, KAB. SERANG 42166",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11310013",
|
|
"1 KRG",
|
|
"1 KRG",
|
|
true,
|
|
"30 PC",
|
|
"30 PC",
|
|
true,
|
|
"AYAM SIZE1 FROZEN (0.75-0.8) KG(*)",
|
|
"AYAM SIZE1 FROZEN (0.75-0.8) KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310014",
|
|
"5 KRG",
|
|
"5 KRG",
|
|
true,
|
|
"100 PC",
|
|
"100 PC",
|
|
true,
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
"AYAM SIZE 2 FROZEN (0.8-0.9)KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310024",
|
|
"5 KRG",
|
|
"5 KRG",
|
|
true,
|
|
"100 PC",
|
|
"100 PC",
|
|
true,
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
true
|
|
],
|
|
[
|
|
"11650053",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"PAHA ATAS 1 KG(*)",
|
|
"PAHA ATAS 1 KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11660050",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"PAHA BAWAH (1 KG)(*)",
|
|
"PAHA BAWAH (1 KG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11690053",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"SBB (FILLET DADA )1 KG(*)",
|
|
"SBB (FILLET DADA )1 KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11710051",
|
|
"1 BOX",
|
|
"2 BOX",
|
|
false,
|
|
"10 KG",
|
|
"20 KG",
|
|
false,
|
|
"DADA UTUH (1 KG)(*)",
|
|
"DADA UTUH (1 KG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11720055",
|
|
"2 BOX",
|
|
"1 BOX",
|
|
false,
|
|
"20 KG",
|
|
"10 KG",
|
|
false,
|
|
"FULL WING FROZ PACK 1 KG(*)",
|
|
"FULL WING FROZ PACK 1 KG(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-028.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000125459",
|
|
"PO/26/0000125459",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691853079",
|
|
"1691853079",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659881372",
|
|
"1659881372",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"06 April 2026",
|
|
"06 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"(empty)",
|
|
"B 9260 BXT",
|
|
false
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM HAJI MUHI",
|
|
"PM HAJI MUHI",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. H. MUHI NO. 14, RT. 001, RW. 004, KEL. PONDOK PINANG, KEC. KEBAYORAN LAMA, JAKARTA SELATAN",
|
|
"JL. H. MUHI NO. 14, RT. 001, RW. 004, KEL. PONDOK PINANG, KEC. KEBAYORAN LAMA, JAKARTA SELATAN",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"12010515",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"CHAMP KOIN KOMBINASI 450 GR/PAC",
|
|
"CHAMP KOIN KOMBINASI 450 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12012502",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"AKUMO CHICKEN NUGGET 500 GR",
|
|
"AKUMO CHICKEN NUGGET 500 GR",
|
|
true
|
|
],
|
|
[
|
|
"12240102",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA CHEESY ITALIAN R/BITES 400 GR/PAC",
|
|
"FIESTA CHEESY ITALIAN R/BITES 400 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"12240103",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA YAKINIKU R/BITES 400 GR/PAC",
|
|
"FIESTA YAKINIKU R/BITES 400 GR/PAC",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-029.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000120972",
|
|
"PO/26/0000120972",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691848409",
|
|
"1691848409",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659876922",
|
|
"1659876922",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"02 April 2026",
|
|
"02 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9260 BXT",
|
|
"B 9260 BXT",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM TANAH KUSIR",
|
|
"PM TANAH KUSIR",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. RC VETERAN NO. 17, RT. 04, RW. 012, KEL. BINTARO, KEC. PESANGGRAHAN, JAKARTA SELATAN",
|
|
"JL. RC VETERAN NO. 17, RT. 04, RW. 012, KEL. BINTARO, KEC. PESANGGRAHAN, JAKARTA SELATAN",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11110074",
|
|
"1 KRG",
|
|
"1 KRG",
|
|
true,
|
|
"20 PAC",
|
|
"20 PAC",
|
|
true,
|
|
"CEKER 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
"CEKER 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11620056",
|
|
"10 BOX",
|
|
"10 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"SBL (FILLET PAHA) 1 KG(*)",
|
|
"SBL (FILLET PAHA) 1 KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11690053",
|
|
"10 BOX",
|
|
"10 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"SBB (FILLET DADA )1 KG(*)",
|
|
"SBB (FILLET DADA )1 KG(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-030.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000122470",
|
|
"PO/26/0000122470",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691850584",
|
|
"1691850584",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659878594",
|
|
"1659878594",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"03 April 2026",
|
|
"03 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9308 BXT",
|
|
"B 9308 BXT",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM KAMPUNG TENGAH",
|
|
"PM KAMPUNG TENGAH",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. RAYA TENGAH RT. 004, RW. 009, KEL. TENGAH, KEC. KRAMAT JATI, JAKARTA TIMUR 13540",
|
|
"JL. RAYA TENGAH RT. 004, RW. 009, KEL. TENGAH, KEC. KRAMAT JATI, JAKARTA TIMUR 13540",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"17210106",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"BOX",
|
|
"8 PAC",
|
|
false,
|
|
"FIESTA RTS B/YAKINIKU 300GR/PAC",
|
|
"FIESTA RTS B/YAKINIKU 300GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"21200107",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"BOX",
|
|
"6 PAC",
|
|
false,
|
|
"NEW FIESTA SPAGHETTI CARBONARA 300GR (PAC)",
|
|
"NEW FIESTA SPAGHETTI CARBONARA 300GR (PAC)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-031.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000121957",
|
|
"PO/26/0000121957",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"191848878",
|
|
"1691848878",
|
|
false
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659877509",
|
|
"1659877509",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"02 April 2026",
|
|
"02 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9767 NCD",
|
|
"B 9767 NCD",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM CIPETE RAYA",
|
|
"PM CIPETE RAYA",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. CIPETE RAYA NO. 15 F, RT. 006, RW. 003, KEL. CIPETE SELATAN, KEC. CILANDAK, JAKARTA SELATAN",
|
|
"JL. CIPETE RAYA NO. 15 F, RT. 006, RW. 003, KEL. CIPETE SELATAN, KEC. CILANDAK, JAKARTA SELATAN",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11310013",
|
|
"4 KRG",
|
|
"4 KRG",
|
|
true,
|
|
"120 PC",
|
|
"120 PC",
|
|
true,
|
|
"AYAM SIZE1 FROZEN (0.75-0.8) KG(*)",
|
|
"AYAM SIZE1 FROZEN (0.75-0.8) KG(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310024",
|
|
"10 KRG",
|
|
"10 KRG",
|
|
true,
|
|
"200 PC",
|
|
"200 PC",
|
|
true,
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-032.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000145236",
|
|
"PO/26/0000143236",
|
|
false
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691872559",
|
|
"1691872559",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659898844",
|
|
"1659898844",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"18 April 2026",
|
|
"18 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9255 JXR",
|
|
"B 9255 JXR",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"KU - DANAU SINGKARAK DEPOK",
|
|
"KU - DANAU SINGKARAK DEPOK",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. DANAU SINGKARAK, RT.001, RW.008, KEL. SUKAMAJU, KEC. CILODONG, DEPOK 16415",
|
|
"JL. DANAU SINGKARAK, RT.001, RW.008, KEL. SUKAMAJU, KEC. CILODONG, DEPOK 16415",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11150064",
|
|
"1 KRG",
|
|
"1 KRG",
|
|
true,
|
|
"20 PAC",
|
|
"20 PAC",
|
|
true,
|
|
"HATI 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
"HATI 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310018",
|
|
"1 KRG",
|
|
"1 KRG",
|
|
true,
|
|
"30 PC",
|
|
"30 PC",
|
|
true,
|
|
"AYAM SIZE 1 PR FROZEN(*)",
|
|
"AYAM SIZE 1 PR FROZEN(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310019",
|
|
"3 KRG",
|
|
"3 KRG",
|
|
true,
|
|
"60 PC",
|
|
"60 PC",
|
|
true,
|
|
"AYAM SIZE 2 PR FROZEN(*)",
|
|
"AYAM SIZE 2 PR FROZEN(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310024",
|
|
"7 KRG",
|
|
"4 KRG",
|
|
false,
|
|
"80 PC",
|
|
"80 PC",
|
|
true,
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
true
|
|
],
|
|
[
|
|
"11660050",
|
|
"20 BOX",
|
|
"20 BOX",
|
|
true,
|
|
"20 PAC",
|
|
"20 PAC",
|
|
true,
|
|
"PAHA BAWAH (1 KG)(*)",
|
|
"PAHA BAWAH (1 KG)(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-033.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000124386",
|
|
"PO/26/0000124386",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691852095",
|
|
"1691852095",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659880471",
|
|
"1659880471",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"04 April 2026",
|
|
"04 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9402 SCH",
|
|
"B 9402 SCH",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM KAMPUNG SAWAH 2",
|
|
"PM KAMPUNG SAWAH 2",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. KI HAJAR DEWANTARA KAV. 12 A, RT. 001, RW. 004, KEL. SAWAH, KEC. CIPUTAT, TANGERANG SELATAN 15413",
|
|
"JL. KI HAJAR DEWANTARA KAV. 12 A, RT. 001, RW. 004, KEL. SAWAH, KEC. CIPUTAT, TANGERANG SELATAN 15413",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11140062",
|
|
"20 KRG",
|
|
"20 KRG",
|
|
true,
|
|
"20 PAC",
|
|
"20 PAC",
|
|
true,
|
|
"AMPELA 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
"AMPELA 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11150064",
|
|
"1 KRG",
|
|
"1 KRG",
|
|
true,
|
|
"20 PAC",
|
|
"20 PAC",
|
|
true,
|
|
"HATI 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
"HATI 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310024",
|
|
"2 KRG",
|
|
"2 KRG",
|
|
true,
|
|
"40 PC",
|
|
"40 PC",
|
|
true,
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
"AYAM SIZE A FROZEN (0.9-1)KG/PC(*)",
|
|
true
|
|
],
|
|
[
|
|
"11660050",
|
|
"10 BOX",
|
|
"10 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"PAHA BAWAH (1 KG)(*)",
|
|
"PAHA BAWAH (1 KG)(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-034.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000135032",
|
|
"PO/26/0000135032",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691863154",
|
|
"1691863154",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659889989",
|
|
"1659889989",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"11 April 2026",
|
|
"11 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"(empty)",
|
|
"B 9372 BXT",
|
|
false
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM GRAND CIKARANG CITY 2",
|
|
"PM GRAND CIKARANG CITY 2",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. BOULEVARD CINITY BLOK D12R -26, KEL. KARANG RAHARJA, KEC. CIKARANG UTARA, KAB. BEKASI 17534",
|
|
"JL. BOULEVARD CINITY BLOK D12R -26, KEL. KARANG RAHARJA, KEC. CIKARANG UTARA, KAB. BEKASI 17534",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11310013",
|
|
"2 KRG",
|
|
"2 KRG",
|
|
true,
|
|
"60 PC",
|
|
"60 PC",
|
|
true,
|
|
"AYAM SIZE1 FROZEN (0.75-0.8) KG(*)",
|
|
"AYAM SIZE1 FROZEN (0.75-0.8) KG(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-035.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000121086",
|
|
"PO/26/0000121086",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691848523",
|
|
"1691848523",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659877015",
|
|
"1659877015",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"02 April 2026",
|
|
"02 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9726 UCT",
|
|
"B 9726 UCT",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM TIMBUL",
|
|
"PM TIMBUL",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. TIMBUL NO. 01, RT. 007, RW. 004, KEL. CIPEDAK, KEC. JAGAKARSA, JAKARTA SELATAN",
|
|
"JL. TIMBUL NO. 01, RT. 007, RW. 004, KEL. CIPEDAK, KEC. JAGAKARSA, JAKARTA SELATAN",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11110074",
|
|
"1 KRG",
|
|
"1 KRG",
|
|
true,
|
|
"20 PAC",
|
|
"20 PAC",
|
|
true,
|
|
"CEKER 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
"CEKER 1 KG FROZEN (20 PAC/KARUNG)(*)",
|
|
true
|
|
],
|
|
[
|
|
"11310021",
|
|
"2 KRG",
|
|
"2 KRG",
|
|
true,
|
|
"40 PC",
|
|
"40 PC",
|
|
true,
|
|
"AYAM SIZE BESAR (B) FROZ (1-1.1)KG/PC(*)",
|
|
"AYAM SIZE BESAR (B) FROZ (1-1.1)KG/PC(*)",
|
|
true
|
|
],
|
|
[
|
|
"11720055",
|
|
"10 BOX",
|
|
"10 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"FULL WING FROZ PACK 1 KG(*)",
|
|
"FULL WING FROZ PACK 1 KG(*)",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-036.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000140731",
|
|
"PO/26/0000140731",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691869400",
|
|
"1691869400",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659896184",
|
|
"1659896184",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"16 April 2026",
|
|
"16 April 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"(empty)",
|
|
"B 9310 BXT",
|
|
false
|
|
],
|
|
[
|
|
"Store Name",
|
|
"MOTHER STORE - PM WARUNG JATI TIMUR RAYA",
|
|
"MOTHER STORE - PM WARUNG JATI TIMUR RAYA",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. WARUNG JATI TIMUR NO.26, RT.007, RW.004, KEL. KALIBATA, KEC. PANCORAN, JAKARTA SELATAN 12740",
|
|
"JL. WARUNG JATI TIMUR NO.26, RT.007, RW.004, KEL. KALIBATA, KEC. PANCORAN, JAKARTA SELATAN 12740",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"12080101",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"12 PAC",
|
|
"12 PAC",
|
|
true,
|
|
"FIESTA SPICY CHICK 400 GR/PAC",
|
|
"FIESTA SPICY CHICK 400 GR/PAC",
|
|
true
|
|
],
|
|
[
|
|
"13010513",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"15 PAC",
|
|
"15 PAC",
|
|
true,
|
|
"CHAMP CHICK SSG 375 GR",
|
|
"CHAMP CHICK SSG 375 GR",
|
|
true
|
|
],
|
|
[
|
|
"13030502",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 PAC",
|
|
"10 PAC",
|
|
true,
|
|
"CHAMP CHICK MEATBALL 500 GR",
|
|
"CHAMP CHICK MEATBALL 500 GR",
|
|
true
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"name": "do-037.jpg",
|
|
"fields": [
|
|
[
|
|
"PO Number",
|
|
"PO/26/0000168198",
|
|
"PO/26/0000168198",
|
|
true
|
|
],
|
|
[
|
|
"SO Number",
|
|
"1691898090",
|
|
"1691898090",
|
|
true
|
|
],
|
|
[
|
|
"DO Number",
|
|
"1659922449",
|
|
"1659922449",
|
|
true
|
|
],
|
|
[
|
|
"Date",
|
|
"07 May 2026",
|
|
"07 May 2026",
|
|
true
|
|
],
|
|
[
|
|
"Customer Name",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
"PT. PRIMAFOOD INTERNATIONAL",
|
|
true
|
|
],
|
|
[
|
|
"Plat Nomor",
|
|
"B 9259 BCU",
|
|
"B 9259 BCU",
|
|
true
|
|
],
|
|
[
|
|
"Store Name",
|
|
"PM KARANG BOLONG SERANG",
|
|
"PM KARANG BOLONG SERANG",
|
|
true
|
|
],
|
|
[
|
|
"Alamat",
|
|
"JL. RAYA KARANG BOLONG BANDULU (KP SEMPUR) NO.22, RT.004, RW.001, KEL. BANDULU, KEC. ANYAR, KAB. SERANG 42166",
|
|
"JL. RAYA KARANG BOLONG BANDULU (KP SEMPUR) NO.22, RT.004, RW.001, KEL. BANDULU, KEC. ANYAR, KAB. SERANG 42166",
|
|
true
|
|
]
|
|
],
|
|
"items": [
|
|
[
|
|
"11750050",
|
|
"1 BOX",
|
|
"1 BOX",
|
|
true,
|
|
"10 KG",
|
|
"10 KG",
|
|
true,
|
|
"FILLET MITRA 1 KG(*)",
|
|
"FILLET MITRA 1 KG(*)",
|
|
true
|
|
]
|
|
]
|
|
}
|
|
];
|
|
|
|
function countMismatches(file) {
|
|
let n = 0;
|
|
file.fields.forEach(f => { if (!f[3]) n++; });
|
|
file.items.forEach(it => { if (!it[3]) n++; if (!it[6]) n++; if (!it[9]) n++; });
|
|
return n;
|
|
}
|
|
|
|
FILES.forEach(f => { f.mismatches = countMismatches(f); });
|
|
FILES.sort((a, b) => b.mismatches - a.mismatches);
|
|
|
|
function escapeHtml(s) {
|
|
return String(s).replace(/[&<>"']/g, c => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }[c]));
|
|
}
|
|
|
|
function valCell(v, match) {
|
|
const isEmpty = v === "(empty)";
|
|
const cls = isEmpty ? "empty-val" : "";
|
|
return `<td class="val-cell ${cls}">${escapeHtml(v)}</td>`;
|
|
}
|
|
|
|
function renderCard(file) {
|
|
const ok = file.mismatches === 0;
|
|
const pill = ok
|
|
? `<span class="pill pill-good">✓ semua cocok</span>`
|
|
: `<span class="pill pill-bad">${file.mismatches} tidak cocok</span>`;
|
|
|
|
const fieldRows = file.fields.map((f, i) => {
|
|
const [label, ai, manual, match] = f;
|
|
const band = i % 2 === 1 ? "band-row" : "";
|
|
const rowCls = !match ? "mismatch " + band : band;
|
|
const icon = match ? `<span class="status-icon">✅</span>` : `<span class="status-icon">❌</span>`;
|
|
return `<tr class="${rowCls}">
|
|
<td class="label-cell">${escapeHtml(label)}</td>
|
|
${valCell(ai, match)}
|
|
${valCell(manual, match)}
|
|
<td>${icon}</td>
|
|
</tr>`;
|
|
}).join("");
|
|
|
|
const itemRows = file.items.map((it, i) => {
|
|
const [sku, aiB, manB, bMatch, aiJ, manJ, jMatch, aiN, manN, nMatch] = it;
|
|
const band = i % 2 === 1 ? "band-row" : "";
|
|
const rowMismatch = (!bMatch || !jMatch || !nMatch);
|
|
const rowCls = rowMismatch ? "mismatch " + band : band;
|
|
const bIcon = bMatch ? "✅" : "❌";
|
|
const jIcon = jMatch ? "✅" : "❌";
|
|
const nIcon = nMatch ? "✅" : "❌";
|
|
return `<tr class="${rowCls}">
|
|
<td class="label-cell">${escapeHtml(sku)}</td>
|
|
<td class="val-cell wrap-cell">${escapeHtml(aiN)}</td>
|
|
<td class="val-cell wrap-cell">${escapeHtml(manN)}</td>
|
|
<td>${nIcon}</td>
|
|
<td class="val-cell">${escapeHtml(aiB)}</td>
|
|
<td class="val-cell">${escapeHtml(manB)}</td>
|
|
<td>${bIcon}</td>
|
|
<td class="val-cell">${escapeHtml(aiJ)}</td>
|
|
<td class="val-cell">${escapeHtml(manJ)}</td>
|
|
<td>${jIcon}</td>
|
|
</tr>`;
|
|
}).join("");
|
|
|
|
const el = document.createElement("details");
|
|
el.className = "card";
|
|
el.dataset.name = file.name.toLowerCase();
|
|
el.dataset.mismatches = file.mismatches;
|
|
if (!ok) el.setAttribute("open", "");
|
|
|
|
el.innerHTML = `
|
|
<summary>
|
|
<svg class="chevron" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M9 18l6-6-6-6"/></svg>
|
|
<span class="fname">${escapeHtml(file.name)}</span>
|
|
${pill}
|
|
</summary>
|
|
<div class="card-body">
|
|
<p class="subhead">Header fields</p>
|
|
<div class="table-scroll">
|
|
<table>
|
|
<thead><tr><th>Field</th><th>AI (Layer 3 Final)</th><th>Manual (ground truth)</th><th>Status</th></tr></thead>
|
|
<tbody>${fieldRows}</tbody>
|
|
</table>
|
|
</div>
|
|
<p class="subhead">Items</p>
|
|
<div class="table-scroll">
|
|
<table>
|
|
<thead><tr><th>SKU</th><th>AI Nama Barang</th><th>Manual Nama Barang</th><th></th><th>AI Banyak</th><th>Manual Banyak</th><th></th><th>AI Jumlah</th><th>Manual Jumlah</th><th></th></tr></thead>
|
|
<tbody>${itemRows}</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
`;
|
|
return el;
|
|
}
|
|
|
|
const listEl = document.getElementById("fileList");
|
|
FILES.forEach(f => listEl.appendChild(renderCard(f)));
|
|
|
|
const searchBox = document.getElementById("searchBox");
|
|
const onlyIssues = document.getElementById("onlyIssues");
|
|
const resultCount = document.getElementById("resultCount");
|
|
const noResults = document.getElementById("noResults");
|
|
const cards = Array.from(document.querySelectorAll("details.card"));
|
|
|
|
function applyFilter() {
|
|
const q = searchBox.value.trim().toLowerCase();
|
|
const issuesOnly = onlyIssues.checked;
|
|
let shown = 0;
|
|
cards.forEach(c => {
|
|
const matchesSearch = !q || c.dataset.name.includes(q);
|
|
const matchesIssue = !issuesOnly || Number(c.dataset.mismatches) > 0;
|
|
const visible = matchesSearch && matchesIssue;
|
|
c.style.display = visible ? "" : "none";
|
|
if (visible) shown++;
|
|
});
|
|
resultCount.textContent = shown + " / " + cards.length + " file";
|
|
noResults.style.display = shown === 0 ? "block" : "none";
|
|
}
|
|
|
|
searchBox.addEventListener("input", applyFilter);
|
|
onlyIssues.addEventListener("change", applyFilter);
|
|
applyFilter();
|
|
</script>
|