<?php
namespace App\Imports;
use App\Barang;
use App\Jenis;
use App\Kategori;
use App\Rak;
use App\Merek;
use App\Satuan;
use App\HargaBarang;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithCalculatedFormulas;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing;
class BarangsImport implements ToCollection,WithCalculatedFormulas
{
protected $excel_data = []; //Wadah Image
protected $index = 0;
public $error = [];
public function collection(Collection $rows)
{
$i = 1; // Baris
try {
$spreadsheet = IOFactory::load(request()->file('file'));
foreach ($spreadsheet->getActiveSheet()->getDrawingCollection() as $drawing) {
if ($drawing instanceof MemoryDrawing) {
ob_start();
call_user_func(
$drawing->getRenderingFunction(),
$drawing->getImageResource()
);
$imageContents = ob_get_contents();
ob_end_clean();
switch ($drawing->getMimeType()) {
case MemoryDrawing::MIMETYPE_PNG :
$extension = 'png';
break;
case MemoryDrawing::MIMETYPE_GIF:
$extension = 'gif';
break;
case MemoryDrawing::MIMETYPE_JPEG :
$extension = 'jpg';
break;
}
} else {
$zipReader = fopen($drawing->getPath(), 'r');
$imageContents = '';
while (!feof($zipReader)) {
$imageContents .= fread($zipReader, 1024);
}
fclose($zipReader);
$extension = $drawing->getExtension();
}
$myFileName = time() .++$this->index. '.' . $extension;
// Simpan Kedalam Array
$this->excel_data[$drawing->getCoordinates()] = [
'file_name' => $myFileName,
'image' => $imageContents,
];
}
} catch (\Throwable $th) {
array_push($this->error, 'Terjadi Error Gambar Pada Excel Baris <b> ' . $i . ' </b> ' . $th->getMessage());
}
foreach ($rows as $row) {
if(isset($row[1]) && $row[1] != NULL && strtolower($row[0]) != 'barcode' && isset($row[2]) && isset($row[3]) && isset($row[4]) && isset($row[5]) && isset($row[4])){
/**
* Script Import Gambar
*/
try {
$barang = Barang::where('nm_barang',$row[1])->first();
$ck = Kategori::where('nm_kategori',$row[2])->first();
if($ck){
$kd_kategori = $ck->kd_kategori;
} else {
$kategori = Kategori::create([
'kd_kategori'=>"K-". (\Helper::strtotime() + $i),
'nm_kategori'=>$row[2],
]);
$kd_kategori = $kategori->kd_kategori;
}
$cr = Rak::where('kd_rak',$row[3])->first();
if($cr){
$kd_rak = $cr->kd_rak;
} else {
$rak = Rak::create([
'kd_rak'=>$row[3],
]);
$kd_rak = $rak->kd_rak;
}
$cm = Satuan::where('nm_satuan',$row[4])->first();
if($cm){
$kd_satuan = $cm->kd_satuan;
} else {
$satuan = Satuan::create([
'kd_satuan'=> "SN-".(\Helper::strtotime() + $i),
'nm_satuan'=>$row[4],
]);
$kd_satuan = $satuan->kd_satuan;
}
} catch (\Throwable $th) {
array_push($this->error, 'Terjadi Error Pada Master Excel Baris <b> ' . $i . ' </b> ' . $th->getMessage());
}
try {
if($barang){
if(isset($row[9]) || isset($row[10])){
foreach ($barang->harga_barang as $hb) {
// Jika Harga Sudah Tersedia, Tidak Perlu Create Lagi
if ($hb->harga_beli != $row[9] && $hb->harga_beli != $row[10]) {
$harga = [
'kd_barang'=>$barang->kd_barang,
'kd_satuan_beli'=>$kd_satuan,
'jumlah_persatuan_beli'=>1,
'jumlah_persatuan_jual'=>1,
'beli_isi'=>1,
'kd_sinkron'=> (\Helper::strtotime() + $i),
'kd_satuan_jual'=>$kd_satuan,
'harga_beli'=>($row[9] != null)?$row[9]:0,
'harga_jual'=>($row[10] != null)?$row[10]:0,
'diskon'=>0
];
HargaBarang::create($harga);
}
}
}
} else {
$barcode = ($row[0] != null && isset($row[0]) && strlen(trim($row[0])) > 0)?$row[0]:\Helper::strtotime();
$nm_barang = $row[1];
$kd_barang = "BRG-".(\Helper::strtotime() + $i);
$barang = Barang::create([
'kd_barang'=> $kd_barang,
'barcode'=>$barcode,
'nm_barang'=>$nm_barang,
'kd_kategori'=>$kd_kategori,
'kd_rak'=>$kd_rak,
'kd_satuan_stok'=>$kd_satuan,
'stok'=>($row[5] != null)?$row[5]:0,
'stok_opname'=>($row[6] != null)?$row[6]:0,
'stok_minimal'=>($row[7] != null)?$row[7]:0,
'stok_maksimal'=>($row[8] != null)?$row[8]:0,
]);
if(isset($row[9]) || isset($row[10])){
$harga = [
'kd_barang'=>$kd_barang,
'kd_satuan_beli'=>$kd_satuan,
'jumlah_persatuan_beli'=>1,
'jumlah_persatuan_jual'=>1,
'beli_isi'=>1,
'kd_sinkron'=> (\Helper::strtotime() + $i),
'kd_satuan_jual'=>$kd_satuan,
'harga_beli'=>($row[9] != null)?$row[9]:0,
'harga_jual'=>($row[10] != null)?$row[10]:0,
'diskon'=>0
];
HargaBarang::create($harga);
}
}
$file_name = null;
if(isset($this->excel_data['L'.$i])){
$file_name = $this->excel_data['L'.$i]['file_name'];
file_put_contents(public_path('images/barang/') . $file_name, $this->excel_data['L'.$i]['image']);
}
$barang->update([
'gambar_barang' => $file_name
]);
} catch (\Throwable $th) {
array_push($this->error, 'Terjadi Error Pada Input Excel Baris <b> ' . $i . ' </b> ' . $th->getMessage());
}
}
$i++;
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]