Skip to content

Purchase Order

Modul: purchase_order. Komitmen kepada vendor, dibuat dari penawaran RFQ yang disetujui atau langsung dari requisition, disetujui lewat routing, dicetak pada template klien, dan menjadi pemicu expediting dan penerimaan barang.

Cara halaman ini diverifikasi

Ditulis dari master pada 2026-09-06 dan dibandingkan dengan big five di hari yang sama. Tidak ada halaman sebelumnya. Peta, bukan penelusuran baris per baris: 33 file, sekitar 580 pemanggilan database.

Posisinya

Requisition (spb_id) / penawaran RFQ (rfq_id, vendor_prop_quo_id)  →  Purchase Order
        →  Expediting (expedite, milestone)  →  Goods Received Report (mrr)  →  invoice

Datanya

TabelBerisi
ts_purchase_orderheader. Identitas: po_no, po_title, po_desc, po_date, revision, project_id, category_id. Sumber: spb_id, rfq_id, vendor_prop_quo_id, so_id, ref_number, doc_ref. Vendor: vendor_id, vendor_contact_id, vendor_reference, contact, phone. Komersial: currency_id, tax, discount, freight_and_handling, insurance, other_charges, documentation, fob_charges, comission, total, payment_terms_id, invoicing_terms, condition_terms_*. Pengiriman: delivery_date, delivery_place, delivery_address, delivery_option, deliver_to_id, incoterms_id, mode_transport_id, packing_type_id, shipping_mark, origin_country, ex_factory_date, milestone_list. Kontrak: contract_id, agreement_type_code, effective_date. Persetujuan: status_save, submit_approval, status_approval, fg_approval, person_prepared_by, person_approved_by, person_for_info.
ts_purchase_order_itemitem baris
ts_file_referenceunggahan dan PDF hasil
ts_procurement_documents, ts_map_procurement_doc_file, ts_procurement_doc_librarytempat PDF yang disetujui diarsipkan

Layarnya

purchase_order.php dengan purchase_order_browse.htm: grid, form header yang dibagi menjadi tab main, commercial dan delivery (masing-masing dengan handler post sendiri), grid item, lampiran (upload, pilih, impor), sub-register vendor dan kontak vendor, cetak, ekspor (CSV, matriks), pindah item naik atau turun, dan form routing. Toolbar: New, Edit, Delete, Cancel, Print, Export, Help.

Penomoran: increment_po, increment_po_a, increment_po_t per years, dengan proc_number_temp sebelum disimpan. Revisi adalah baris header baru untuk po_no yang sama; findPurchaseOrderByNumberAndRev() di class menyelesaikan pasangannya.

Persetujuan dan yang terjadi sesudahnya

  1. Form routing (purchase_order_handler_routing_form.php dan _routing_post.php, memakai $pdo): pengguna memilih vendor, rujukan dokumen (requisition atau RFQ), tipe perjanjian, kontak attention dan cc, penyiap dan tanggal dokumen (field IR20___*), lalu submit.
  2. Routing: purchase_order_handler_post.php mem-POST dengan 'rout_group_mod' => 'procurement' dan mengeset submit_approval = 1, status_approval = 0. Routing-nya adalah entri Document Routing biasa dengan routing_procure = 1.
  3. Saat selesai, RoutingProcurementUc memanggil purchase_order.class.php, yang mengimplementasikan RoutingProcurementInterface:
    • ProcessProcurement() memperbarui header;
    • GenerateDocument() merender PO lewat purchase_order_print_process.php dan print flavour;
    • StoreDocumentsToProcumentDocs() mendaftarkannya di Procurement Documents di folder per PO;
    • handlerExpediteModule() membuat record expediting dan detail milestone-nya dari milestone_list, jadi PO muncul di Material Expediting;
    • NotificationProcurement() memberi tahu.

Cancel (act=cancelPurchaseOrder, cancelpo) mengembalikan submit_approval dan status_approval ke 0.

Pencetakan

Tata letak cetak PO bisa diedit: template_po_updates.php dan _json_template_po.php menyimpan JSON kotak dan grid, mekanisme yang sama dengan so_templates di inweb_config. Class flavour mana yang merendernya berasal dari procure_print_template_code. Varian diskon ada di purchase_order_handler_print_browse_discount.inc.php.

Yang masih memakai helper legacy

Dihitung pada 2026-09-06: 112 pemanggilan iw_mysql_query() berbanding 471 pemakaian $pdo, dan 106 dari 112 ada di purchase_order_handler_form_041214.php, backup bertanggal yang tidak dirutekan. Modul yang aktif memakai $pdo kecuali upload multi-file (purchase_order_multiupload_upload.php, 4 pemanggilan legacy) dan satu pemanggilan di handler post. Dari empat modul rantai, inilah yang sudah dimigrasi.

Hal yang perlu diwaspadai

  • Dua jalan masuk. PO bisa merujuk requisition langsung (spb_id) atau penawaran yang disetujui (rfq_id plus vendor_prop_quo_id). Report yang menghitung "PO dari RFQ" melewatkan yang langsung.
  • Revisi adalah baris baru. Query berdasarkan po_no saja mengembalikan setiap revisi.
  • Expediting dibuat saat disetujui, bukan saat disimpan. PO yang tidak pernah menyelesaikan routing tidak pernah muncul di Material Expediting.
  • Upload multi-file mati di tempat helper legacy melempar exception; pakai jalur pilih lampiran.

Perbedaan antar instance

Diperiksa pada 2026-09-06.

InstancePerbedaan
JOTRETerpasang. Dua belas file berbeda dari master dan satu ditambahkan. Handler form, cetak, pratinjau dan post routing mendorong PO yang disetujui ke Accurate (accurate_push_po.php dan cron sinkronisasi). Membawa sisa purchase_order.inc.php.bak_costcode.
Jadestone, Medco, TimasTidak terpasang di database QA mereka. Dua atau tiga file berbeda dari master.

Terkait