Perbarui cetak dan stok barcode

This commit is contained in:
Dwi Swandhana
2026-03-13 12:24:10 +07:00
parent 52ee41e50c
commit 6fb3f5a629
11 changed files with 2239 additions and 191 deletions
@@ -0,0 +1,78 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('simbhpjenis', function (Blueprint $table) {
if (!Schema::hasColumn('simbhpjenis', 'barcode_besar')) {
$table->string('barcode_besar', 20)->nullable()->after('kodejenis');
}
if (!Schema::hasColumn('simbhpjenis', 'barcode_kecil')) {
$table->string('barcode_kecil', 20)->nullable()->after('barcode_besar');
}
});
if (!Schema::hasColumn('simbhpjenis', 'barcode_besar')) {
return;
}
DB::table('simbhpjenis')
->orderBy('id', 'ASC')
->chunkById(200, function ($rows) {
foreach ($rows as $row) {
$id = (int) ($row->id ?? 0);
if ($id <= 0) {
continue;
}
$idPart = str_pad((string) $id, 8, '0', STR_PAD_LEFT);
$barcodeBesar = '91' . $idPart . '1';
$existingBesar = isset($row->barcode_besar) ? trim((string) $row->barcode_besar) : '';
$existingKecil = isset($row->barcode_kecil) ? trim((string) $row->barcode_kecil) : '';
$satuanKecil = isset($row->satuan_kecil) ? trim((string) $row->satuan_kecil) : '';
$konversi = (int) ($row->konversi_kecil ?? 1);
if ($konversi <= 0) {
$konversi = 1;
}
$hasBreakdown = ($satuanKecil !== '' && $konversi > 1);
$update = [];
if ($existingBesar === '') {
$update['barcode_besar'] = $barcodeBesar;
}
if ($hasBreakdown) {
$barcodeKecil = '91' . $idPart . '2';
if ($existingKecil === '') {
$update['barcode_kecil'] = $barcodeKecil;
}
}
if (count($update) > 0) {
DB::table('simbhpjenis')->where('id', $id)->update($update);
}
}
}, 'id');
}
public function down(): void
{
Schema::table('simbhpjenis', function (Blueprint $table) {
if (Schema::hasColumn('simbhpjenis', 'barcode_kecil')) {
$table->dropColumn('barcode_kecil');
}
if (Schema::hasColumn('simbhpjenis', 'barcode_besar')) {
$table->dropColumn('barcode_besar');
}
});
}
};