Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Http\Controllers;
- use App\Http\Controllers\Controller;
- use Illuminate\Http\Request;
- use App\KorisnikPodaci_Magacini;
- use App\KorisnikPodaci_Partneri;
- use App\KorisnikPodaci_Artikli;
- use App\KorisnikPodaci_NivelacijeZaglavlja;
- use App\KorisnikPodaci_NivelacijeDokumenti;
- use App\KorisnikPodaci_NivelacijaArtikli;
- use App\KorisnikPodaci_ArtikliDokumenti;
- use App\KorisnikPodaci_ZaliheObjekat;
- use App\KorisnikPodaci_PopisZaglavlja;
- use App\KorisnikPodaci_PopisStavke;
- use App\OpstiPodaci_PdvStope;
- use App\KorisnikPodaci_InternaOtpremnicaZaglavlja;
- use App\KorisnikPodaci_InternaOtpremnicaArtikli;
- use App\KorisnikPodaci_FiskalniRacuniArtikli;
- use App\KorisnikPodaci_FiskalniRacuniZaglavlja;
- use App\KorisnikPodaci_KasaTerminali;
- use DB;
- use \Validator;
- use Carbon\Carbon;
- use Response;
- class InternaOtpremnicaControllerBojke extends Controller
- {
- public function napraviInternuOtpremnicu(Request $request) {
- //$kompanija_id = $request->session()->get('kompanija_id');
- $kompanija_id = 25;
- config(['database.connections.mysql2.database' => $kompanija_id]);
- if(isset($request->objekat_izlaz_id) && isset($request->objekat_prijem_id) && isset($request->datum_izrade) && isset($request->datum_prometa)) {
- $novo_zaglavlje = new KorisnikPodaci_InternaOtpremnicaZaglavlja;
- $novo_zaglavlje->objekat_izlaz_id = $request->objekat_izlaz_id;
- $novo_zaglavlje->objekat_prijem_id = $request->objekat_prijem_id;
- $novo_zaglavlje->datum_izrade = $request->datum_izrade;
- $novo_zaglavlje->datum_prometa = $request->datum_prometa;
- $novo_zaglavlje->napomena = $request->napomena;
- $novo_zaglavlje->status = "U pripremi";
- $novo_zaglavlje->save();
- return Response::json(['id' => $novo_zaglavlje->id], 200);
- }
- return Response::json(['message' => 'not set'], 200);
- }
- public function listaInternihOtpremnica(Request $request) {
- $kompanija_id = 25;//$request->session()->get('kompanija_id');
- config(['database.connections.mysql2.database' => $kompanija_id]);
- $magacini = KorisnikPodaci_Magacini::all();
- $zaglavlja = KorisnikPodaci_InternaOtpremnicaZaglavlja::all();
- return view('internaotpremnica.listainternihotpremnica')->with('zaglavlja', $zaglavlja)->with('magacini', $magacini->keyBy('id'));
- }
- public function pretraziInterneOtpremnice_OBRISATI(Request $request) {
- $kompanija_id = 25;//$request->session()->get('kompanija_id');
- config(['database.connections.mysql2.database' => $kompanija_id]);
- $magacini = KorisnikPodaci_Magacini::all();
- $zaglavlja = KorisnikPodaci_InternaOtpremnicaZaglavlja::all();
- if(isset($request->objekat_prijem_id) && $request->objekat_prijem_id != -1)
- $zaglavlja = $zaglavlja->where('objekat_prijem_id', $request->objekat_prijem_id);
- if(isset($request->objekat_izlaz_id) && $request->objekat_izlaz_id != -1)
- $zaglavlja = $zaglavlja->where('objekat_izlaz_id', $request->objekat_izlaz_id);
- return view('internaotpremnica.listainternihotpremnica')->with('zaglavlja', $zaglavlja)->with('magacini', $magacini->keyBy('id'));
- }
- public function pregledajInternuOtpremnicu_OBRISATI(Request $request) {
- $kompanija_id = 25;//$request->session()->get('kompanija_id');
- config(['database.connections.mysql2.database' => $kompanija_id]);
- if(0) {
- if($potvrdjen) {
- if(moguce()) {
- otkljucaj_internu_otpremnicu($id);
- revertuj_promene_interne($id);
- }
- }
- }
- $zaglavlje = KorisnikPodaci_InternaOtpremnicaZaglavlja::find($request->internaotpremnica_id)->toArray();
- if(!$zaglavlje)
- return 'dokument nije pronadjen';
- //dd($podaci);
- $magacini = KorisnikPodaci_Magacini::all();
- //$zaglavlje = KorisnikPodaci_InternaOtpremnicaZaglavlja::find($request->internaotpremnica_id);
- return view('internaotpremnica.pregledajiotpr')->with('zaglavlje', $podaci['zaglavlje'])->with('magacini', $magacini)->with('artikli', $podaci['artikli']);
- }
- public function internaOtpremnicaZaglavlje(Request $request) {
- $kompanija_id = 25;//$request->session()->get('kompanija_id');
- config(['database.connections.mysql2.database' => $kompanija_id]);
- $interna_otpremnica_id = $request->internaotpremnica_id;
- $zaglavlje = KorisnikPodaci_InternaOtpremnicaZaglavlja::find($interna_otpremnica_id);
- if(!$zaglavlje)
- return 'nepostojeci dokument';
- if($zaglavlje->status == "U pripremi")
- return InternaOtpremnicaControllerBojke::izmeniInternuOtpremnicuBlade($interna_otpremnica_id);
- if($zaglavlje->status == "Potvrdjen")
- return InternaOtpremnicaControllerBojke::pregledajInternuOtpremnicuBlade($zaglavlje);
- }
- public function izmeniInternuOtpremnicu(Request $request) {
- $kompanija_id = 25;//$request->session()->get('kompanija_id');
- config(['database.connections.mysql2.database' => $kompanija_id]);
- $interna_otpremnica_id = $request->interna_otpremnica_id;
- $zaglavlje = KorisnikPodaci_InternaOtpremnicaZaglavlja::find($interna_otpremnica_id);
- if(!$zaglavlje)
- return 'nepostojeci dokument';
- if($zaglavlje->status == "U pripremi")
- return Response::json(['success' => 'true'], 200);
- $izmenljiva = InternaOtpremnicaControllerBojke::daLiJeIzmenljivaIO($interna_otpremnica_id);
- if(!$izmenljiva)
- return Response::json(['success' => 'false', 'message' => 'neizmenljivo'], 200);
- if($zaglavlje->status == "Potvrdjen") {
- $reverted = InternaOtpremnicaControllerBojke::revertujInternuOtpremnicu($interna_otpremnica_id);
- dd($reverted);
- return Response::json(['success' => $reverted ? 'true' : 'false'], 200);
- }
- }
- public static function obrisiInternuOtpremnicu($interna_otpremnica_id) {
- $zaglavlje = KorisnikPodaci_InternaOtpremnicaZaglavlja::find($interna_otpremnica_id);
- if(!$zaglavlje || $zaglavlje->status != 'U pripremi')
- return 0;
- $obrisani_artikli = KorisnikPodaci_InternaOtpremnicaArtikli::where('internaotpremnica_id', $zaglavlje->id)->delete();
- $obrisano_zaglavlje = $zaglavlje->delete();
- return 1;
- }
- public static function daLiJeIzmenljivaIO($interna_otpremnica_id) {
- $zaglavlje = KorisnikPodaci_InternaOtpremnicaZaglavlja::findOrFail($interna_otpremnica_id);
- $objekat_prijem_id = $zaglavlje->objekat_prijem_id;
- $artikli_dokumenti_poslednji_id = $zaglavlje->artikli_dokumenti_poslednji_id;
- $interna_otpremnica_artikli = KorisnikPodaci_InternaOtpremnicaArtikli::where('internaotpremnica_id', $zaglavlje->id)->get();
- foreach ($interna_otpremnica_artikli as $artikal) {
- $imaNestoPosle = KorisnikPodaci_ArtikliDokumenti::where('id', '>', $artikli_dokumenti_poslednji_id)->where('sifra_artikla', $artikal->sifra_artikla)->where('objekat_id', $objekat_prijem_id)->first();
- if($imaNestoPosle) return 0;
- }
- return 1;
- }
- public static function pregledajInternuOtpremnicuBlade($zaglavlje) {
- $magacin_izlaz = KorisnikPodaci_Magacini::find($zaglavlje->objekat_izlaz_id)->naziv;
- $magacin_prijem = KorisnikPodaci_Magacini::find($zaglavlje->objekat_prijem_id)->naziv;
- $artikli = KorisnikPodaci_InternaOtpremnicaArtikli::where('internaotpremnica_id', $zaglavlje->id)->get();
- return view('internaotpremnica.internaotpremnicapregledajzaglavlje')->with('zaglavlje', $zaglavlje)->with('magacin_izlaz', $magacin_izlaz)->with('magacin_prijem', $magacin_prijem)->with('artikli', $artikli);
- }
- public function fiskalniRacuni(Request $request) {
- $kompanija_id = $request->session()->get('kompanija_id');
- config(['database.connections.mysql2.database' => $kompanija_id]);
- $fiskalni_racuni = KorisnikPodaci_FiskalniRacuniZaglavlja::select('id', 'broj_racuna', 'buyerId', 'timestamp_izdavanja', 'gotovina_iznos', 'kartica_iznos', 'cek_iznos', 'vaucer_iznos', 'instant_iznos', 'ostalo_naziv', 'prenos_iznos', 'ostalo_iznos')->orderBy('id', 'desc')->take(500)->get();
- $kase = KorisnikPodaci_KasaTerminali::all();
- return view('fiskalniracuni')->with('fiskalni_racuni', $fiskalni_racuni)->with('kase', $kase);
- }
- public function pretragaFiskalnihRacuna(Request $request) {
- $kompanija_id = $request->session()->get('kompanija_id');
- config(['database.connections.mysql2.database' => $kompanija_id]);
- if($request->broj_racuna != '') {
- $fiskalni_racun = KorisnikPodaci_FiskalniRacuniZaglavlja::where('broj_racuna', $request->broj_racuna)->first();
- return json_encode(array("success"=> $fiskalni_racun ? "true" : "false", "racuni"=> array($fiskalni_racun)));
- }
- $fiskalni_racuni = NULL;
- if($request->id_kupca != '') {
- if(str_contains($request->id_kupca, ':'))
- $fiskalni_racuni = KorisnikPodaci_FiskalniRacuniZaglavlja::where('buyerId', $request->id_kupca);
- else
- $fiskalni_racuni = KorisnikPodaci_FiskalniRacuniZaglavlja::where('buyerId', '10:'.$request->id_kupca)->orWhere('buyerId', '11:'.$request->id_kupca);
- }
- if($request->uid != 'sve') {
- if($fiskalni_racuni == NULL)
- $fiskalni_racuni = KorisnikPodaci_FiskalniRacuniZaglavlja::where('uid', $request->uid)->orderBy('id', 'desc')->take(500);
- else
- $fiskalni_racuni = $fiskalni_racuni->where('uid', $request->uid);
- }
- elseif($request->uid == 'sve' && $fiskalni_racuni == NULL)
- $fiskalni_racuni = KorisnikPodaci_FiskalniRacuniZaglavlja::orderBy('id', 'desc')->take(500);
- if($fiskalni_racuni != NULL) {
- $fiskalni_racuni = $fiskalni_racuni->get()->toArray();
- if(!count($fiskalni_racuni)) $fiskalni_racuni = NULL;
- }
- //dd($fiskalni_racuni);
- return json_encode(array("success"=> $fiskalni_racuni != NULL ? "true" : "false", "racuni" => $fiskalni_racuni));
- }
- public function pregledajFiskalniRacun(Request $request) {
- $broj_racuna = $request->broj_racuna;
- $kompanija_id = $request->session()->get('kompanija_id');
- config(['database.connections.mysql2.database' => $kompanija_id]);
- $racun = KorisnikPodaci_FiskalniRacuniZaglavlja::select('tip_racuna', 'vrsta_transakcije', 'buyerId', 'timestamp_izdavanja', 'gotovina_iznos', 'kartica_iznos', 'cek_iznos', 'vaucer_iznos', 'instant_iznos', 'ostalo_naziv', 'prenos_iznos', 'ostalo_iznos', 'kasir', 'objekat_id')->where('broj_racuna', $request->broj_racuna)->first()->toArray();
- $magacin = KorisnikPodaci_Magacini::find($racun['objekat_id']);
- $racun['datum_izdavanja'] = \Carbon\Carbon::createFromTimestamp($racun['timestamp_izdavanja'])->toDateTimeString();
- $racun['magacin'] = $magacin ? $magacin->naziv : 'OBRISAN MAGACIN';
- $artikli = KorisnikPodaci_FiskalniRacuniArtikli::select('naziv', 'kolicina', 'sifra', 'prodajna_cena_sa_pdv', 'pdv_stopa', 'rabat_iznos')->where('broj_racuna', $broj_racuna)->get()->toArray();
- return json_encode(array('racun'=>$racun, 'artikli'=>$artikli));
- }
- public static function izmeniInternuOtpremnicuBlade($interna_otpremnica_id) {
- $podaci = InternaOtpremnicaControllerBojke::podaciInterneOtpremnice($interna_otpremnica_id);
- if(!$podaci)
- return 'dokument nije pronadjen';
- //dd($podaci);
- // if($podaci['zaglavlje']['nedovoljno_zaliha']) {
- // $artikli_array = array();
- // foreach ($podaci['artikli'] as $artikal) {
- // $artikal_ubacen = 0;
- // foreach ($podaci['zaglavlje']['nedovoljno_zaliha_artikli'] as $artikal_za_zacrveneti) {
- // if($artikal['sifra_artikla'] == $artikal_za_zacrveneti['sifra_artikla']) {
- // $artikal['zacrveniti'] = 1;
- // array_unshift($artikli_array, $artikal);
- // $artikal_ubacen = 1;
- // break;
- // }
- // }
- // if(!$artikal_ubacen)
- // array_push($artikli_array, $artikal);
- // }
- // }
- // else {
- // $artikli_array =
- // }
- $za_zacrveniti = array();
- foreach ($podaci['zaglavlje']['nedovoljno_zaliha_artikli'] as $artikal_za_zacrveneti)
- array_push($za_zacrveniti, $artikal_za_zacrveneti['sifra_artikla']);
- $magacini = KorisnikPodaci_Magacini::all();
- $prijemni_magacin = KorisnikPodaci_Magacini::find($podaci['zaglavlje']['objekat_prijem_id']);
- $prodajna_cena_sa_pdv_disabled = $prijemni_magacin->tip != "Maloprodaja";
- $prodajna_cena_bez_pdv_disabled = $prijemni_magacin->tip != "Veleprodaja";
- //$zaglavlje = KorisnikPodaci_InternaOtpremnicaZaglavlja::find($request->internaotpremnica_id);
- return view('internaotpremnica.internaotpremnicaizmenizaglavlje')->with('zaglavlje', $podaci['zaglavlje'])->with('magacini', $magacini)->with('artikli', $podaci['artikli'])->with('prodajna_cena_sa_pdv_disabled', $prodajna_cena_sa_pdv_disabled)->with('prodajna_cena_bez_pdv_disabled', $prodajna_cena_bez_pdv_disabled)->with('za_zacrveniti', $za_zacrveniti);
- }
- public function sacuvajPromeneInterneOtpremnice_OBRISI(Request $request) {
- //$kompanija_id = $request->session()->get('kompanija_id');
- $kompanija_id = 25;
- config(['database.connections.mysql2.database' => $kompanija_id]);
- $interna_otpremnica_id = $request->interna_otpremnica_id;
- $zaglavlje = KorisnikPodaci_InternaOtpremnicaZaglavlja::find($interna_otpremnica_id);
- if(!$zaglavlje)
- return Response::json(['message' => 'not found'], 200);
- $izlaz_id = $zaglavlje->objekat_izlaz_id;
- $prijem_id = $zaglavlj->objekat_prijem_id;
- $artikli = KorisnikPodaci_InternaOtpremnicaArtikli::where('internaotpremnica_id', $interna_otpremnica_id)->get();
- foreach ($artikli as $artikal) {
- $sifra_artikla = $artikal->sifra_artikla;
- $kolicina = $artikal->kolicina;
- $objekat_izlaz_nabavne_cene_artikla = KorisnikPodaci_ZaliheObjekat::where('sifra_artikla', $sifra_artikla)->where('objekat_id', $izlaz_id)->orderBy('created_at');
- $ukupno_na_zalihama_za_objekat_izlaz = array_sum($objekat_izlaz_nabavne_cene_artikla->pluck('trenutna_kolicina')->toArray());
- if($kolicina > $ukupno_na_zalihama_za_objekat_izlaz) // PROVERA DA LI POSTOJI DOVOLJNA KOLICINA ARTIKLA U IZLAZNOM MAGACINU
- return Response::json(['message' => 'kolicina'], 200);
- }
- }
- public function pregledajArtikakInternaOtpremnica(Request $request) {
- if(!isset($request->interna_otpremnica_id) || !isset($request->sifra_artikla))
- return Response::json(['message' => 'not set'], 200);
- //$kompanija_id = $request->session()->get('kompanija_id');
- $kompanija_id = 25;
- config(['database.connections.mysql2.database' => $kompanija_id]);
- $artikal = KorisnikPodaci_InternaOtpremnicaArtikli::where('internaotpremnica_id', $request->interna_otpremnica_id)->where('sifra_artikla', $request->sifra_artikla)->first();
- if(!$artikal) return 0;
- $artikal_podaci = InternaOtpremnicaControllerBojke::generisiPodatkeArtikla($request->interna_otpremnica_id, $artikal, $pregled=1);
- return $artikal_podaci;
- }
- public function internaOtpremnicaUcitajPromeneZaglavlja(Request $request) {
- if(!isset($request->interna_otpremnica_id))
- return Response::json(['message' => 'not set'], 200);
- //$kompanija_id = $request->session()->get('kompanija_id');
- $kompanija_id = 25;
- config(['database.connections.mysql2.database' => $kompanija_id]);
- $podaci = InternaOtpremnicaControllerBojke::podaciInterneOtpremnice($request->interna_otpremnica_id);
- return $podaci ? $podaci : Response::json(['message' => 'not found'], 200);
- }
- public static function podaciInterneOtpremnice($interna_otpremnica_id) {
- $zaglavlje = KorisnikPodaci_InternaOtpremnicaZaglavlja::find($interna_otpremnica_id);
- if(!$zaglavlje)
- return 0;
- $svi_artikli_za_internu_otpremnicu = KorisnikPodaci_InternaOtpremnicaArtikli::where('internaotpremnica_id', $interna_otpremnica_id)->get();
- $info_obracun = InternaOtpremnicaControllerBojke::generisiInfoObracun($interna_otpremnica_id, $svi_artikli_za_internu_otpremnicu);
- $artikli = count($svi_artikli_za_internu_otpremnicu) ? $svi_artikli_za_internu_otpremnicu->toArray() : '';
- return array('zaglavlje'=>array_merge($zaglavlje->toArray(), $info_obracun), 'artikli'=>$artikli);
- }
- public function obrisiArtikalUinternojOtpremnici(Request $request) {
- if(!isset($request->interna_otpremnica_id) || !isset($request->sifra_artikla))
- return Response::json(['message' => 'not set'], 200);
- $kompanija_id = 25;
- config(['database.connections.mysql2.database' => $kompanija_id]);
- $zaglavlje = KorisnikPodaci_InternaOtpremnicaZaglavlja::findOrFail($request->interna_otpremnica_id);
- if($zaglavlje->status != "U pripremi")
- return 0;
- $artikal = KorisnikPodaci_InternaOtpremnicaArtikli::where('internaotpremnica_id', $request->interna_otpremnica_id)->where('sifra_artikla', $request->sifra_artikla)->first();
- if($artikal)
- $artikal->delete();
- return 1;
- }
- public function dodajIliIzmeniArtikalUinternojOtpremnici(Request $request) {
- if(!isset($request->interna_otpremnica_id) || !isset($request->sifra_artikla) || !isset($request->kolicina) || $request->kolicina<=0)
- return Response::json(['message' => 'not set'], 200);
- //$kompanija_id = $request->session()->get('kompanija_id');
- $pdv_stope = OpstiPodaci_PdvStope::all();
- $kompanija_id = 25;
- config(['database.connections.mysql2.database' => $kompanija_id]);
- $interna_otpremnica_id = $request->interna_otpremnica_id;
- $sifra_artikla = $request->sifra_artikla;
- $kolicina = $request->kolicina;
- $zaglavlje = KorisnikPodaci_InternaOtpremnicaZaglavlja::findOrFail($interna_otpremnica_id);
- if($zaglavlje->status != "U pripremi")
- return 0;
- $artikal = KorisnikPodaci_InternaOtpremnicaArtikli::where('internaotpremnica_id', $request->interna_otpremnica_id)->where('sifra_artikla', $request->sifra_artikla)->first();
- $cena_vec_stavljena = 0;
- if(!$artikal) { // ako artikal ne postoji
- $artikal_info = KorisnikPodaci_Artikli::where('sifra', $sifra_artikla)->first();
- if(!$artikal_info)
- return Response::json(['message' => 'artikal'], 200);
- $artikal = new KorisnikPodaci_InternaOtpremnicaArtikli;
- $artikal->internaotpremnica_id = $interna_otpremnica_id;
- $artikal->sifra_artikla = $sifra_artikla;
- $artikal->naziv_artikla = $artikal_info->naziv;
- $artikal->barkod_artikla = $artikal_info->barkod;
- $artikal->jedinica_mere = $artikal_info->merna_jedinica;
- $cena_uneta = (isset($request->prodajna_cena_sa_pdv) && $request->prodajna_cena_sa_pdv != '') || (isset($request->prodajna_cena_bez_pdv) && $request->prodajna_cena_bez_pdv != '');
- if(!$cena_uneta) {
- $zaliha = KorisnikPodaci_ZaliheObjekat::where('objekat_id', $zaglavlje->objekat_prijem_id)->where('sifra_artikla', $artikal->sifra_artikla)->first();
- if($zaliha) {
- $artikal->prodajna_cena_sa_pdv_prijem = $zaliha->prodajna_cena_sa_pdv;
- $artikal->prodajna_cena_bez_pdv_prijem = $zaliha->prodajna_cena_bez_pdv;
- $cena_vec_stavljena = 1;
- }
- }
- foreach ($pdv_stope as $stopa) {
- if($stopa->id == $artikal_info->pdv_tip) {
- $artikal->pdv_procenat = $stopa->vrednost;
- break;
- }
- }
- }
- if(!$cena_vec_stavljena) {
- if(isset($request->prodajna_cena_sa_pdv)) {
- $artikal->prodajna_cena_sa_pdv_prijem = $request->prodajna_cena_sa_pdv;
- $artikal->prodajna_cena_bez_pdv_prijem = $request->prodajna_cena_sa_pdv - $request->prodajna_cena_sa_pdv * ($artikal->pdv_procenat/100 / (1+$artikal->pdv_procenat/100));
- }
- else if(isset($request->prodajna_cena_bez_pdv)) {
- $artikal->prodajna_cena_bez_pdv_prijem = $request->prodajna_cena_bez_pdv;
- $artikal->prodajna_cena_sa_pdv_prijem = $request->prodajna_cena_bez_pdv * ($artikal->pdv_procenat/100+1);
- }
- else {
- $artikal->prodajna_cena_sa_pdv_prijem = 0;
- $artikal->prodajna_cena_bez_pdv_prijem = 0;
- }
- }
- $artikal->kolicina = $kolicina;
- $artikal_podaci = InternaOtpremnicaControllerBojke::generisiPodatkeArtikla($interna_otpremnica_id, $artikal);
- if($artikal_podaci == -1)
- return Response::json(['message' => 'zalihe'], 200);
- //return -1;
- $artikal->save();
- //return podaciZaPopunjavanjeModala($kompanija_id, $objekat_ulaz=$zaglavlje->objekat_prijem_id, $artikal=$artikal, $interna_otpremnica_id=$request->interna_otpremnica_id, $sifra_artikla=$request->sifra_artikla)
- return InternaOtpremnicaControllerBojke::podaciZaPopunjavanjeModala($sifra_artikla=$sifra_artikla, $zaglavlje=$zaglavlje, $kolicina=$kolicina, $artikal_podaci=$artikal_podaci, $zalihe_objekat_izlaz=$artikal_podaci['ukupno_na_zalihama_za_objekat_izlaz']);
- //podaciZaPopunjavanjeModala($sifra_artikla, $zaglavlje, $kolicina, $artikal_podaci, $zalihe_objekat_izlaz=-1)
- //return $artikal->toJson(); // gotovo cuvanje , vraca podatke za prikaz..
- }
- public function proveriNivelacije(Request $request) {
- $kompanija_id = 25;
- config(['database.connections.mysql2.database' => $kompanija_id]);
- return InternaOtpremnicaControllerBojke::uporediProdajneCene($request->interna_otpremnica_id);
- }
- public static function uporediProdajneCene($interna_otpremnica_id) {
- $zaglavlje = KorisnikPodaci_InternaOtpremnicaZaglavlja::find($interna_otpremnica_id);
- $artikli = KorisnikPodaci_InternaOtpremnicaArtikli::where('internaotpremnica_id', $interna_otpremnica_id)->get();
- $prijemni_magacin = KorisnikPodaci_Magacini::find($zaglavlje->objekat_prijem_id);
- $tip_prijemnog_magacina = $prijemni_magacin->tip;
- $usporedba = array();
- foreach ($artikli as $artikal) {
- $zaliha = KorisnikPodaci_ZaliheObjekat::where('objekat_id', $zaglavlje->objekat_prijem_id)->where('sifra_artikla', $artikal->sifra_artikla)->first();
- if(!$zaliha) continue;
- //dd($tip_prijemnog_magacina, $zaliha, $artikal);
- if($tip_prijemnog_magacina == "Maloprodaja" && $zaliha->prodajna_cena_sa_pdv != $artikal->prodajna_cena_sa_pdv_prijem)
- array_push($usporedba, array(
- "sifra_artikla"=>$artikal->sifra_artikla,
- "naziv_artikla"=>$artikal->naziv_artikla,
- "trenutna_prodajna_cena_sa_pdv"=>$zaliha->prodajna_cena_sa_pdv,
- "nova_prodajna_cena_sa_pdv"=>$artikal->prodajna_cena_sa_pdv_prijem
- ));
- elseif($tip_prijemnog_magacina == "Veleprodaja" && $zaliha->prodajna_cena_bez_pdv != $artikal->prodajna_cena_bez_pdv_prijem)
- array_push($usporedba, array(
- "sifra_artikla"=>$artikal->sifra_artikla,
- "naziv_artikla"=>$artikal->naziv_artikla,
- "trenutna_prodajna_cena_bez_pdv"=>$zaliha->prodajna_cena_bez_pdv,
- "nova_prodajna_cena_bez_pdv"=>$artikal->prodajna_cena_sa_pdv_prijem
- ));
- }
- return $usporedba;
- }
- public function potvrdiIO(Request $request) {
- if(!isset($request->interna_otpremnica_id))
- return Response::json(['message' => 'not set'], 200);
- //$kompanija_id = $request->session()->get('kompanija_id');
- $kompanija_id = 25;
- config(['database.connections.mysql2.database' => $kompanija_id]);
- return InternaOtpremnicaControllerBojke::potvrdiInternuOtpremnicu($request->interna_otpremnica_id);
- }
- public static function revertujInternuOtpremnicu($interna_otpremnica_id) {
- $zaglavlje = KorisnikPodaci_InternaOtpremnicaZaglavlja::findOrFail($interna_otpremnica_id);
- if($zaglavlje->status != "Potvrdjen")
- return 0;
- $objekat_izlaz_id = $zaglavlje->objekat_izlaz_id;
- $objekat_prijem_id = $zaglavlje->objekat_prijem_id;
- $svi_artikli = KorisnikPodaci_InternaOtpremnicaArtikli::where('internaotpremnica_id', $zaglavlje->id)->get();
- foreach ($svi_artikli as $artikal) {
- foreach (json_decode($artikal->nabavne_cene_json, 1) as $nabavna_cena) {
- $zaliha_izlaz = KorisnikPodaci_ZaliheObjekat::where('objekat_id', $objekat_izlaz_id)->where('sifra_artikla', $artikal->sifra_artikla)->where('nabavna_cena_sa_pdv', $nabavna_cena['nabavna_cena_sa_pdv'])->first();
- $zaliha_prijem = KorisnikPodaci_ZaliheObjekat::where('objekat_id', $objekat_prijem_id)->where('sifra_artikla', $artikal->sifra_artikla)->where('nabavna_cena_sa_pdv', $nabavna_cena['nabavna_cena_sa_pdv'])->first();
- $zaliha_izlaz->trenutna_kolicina += $nabavna_cena['kolicina'];
- $zaliha_izlaz->ukupna_kolicina_izlaz -= $nabavna_cena['kolicina'];
- $zaliha_prijem->trenutna_kolicina -= $nabavna_cena['kolicina'];
- $zaliha_prijem->ukupna_kolicina_ulaz -= $nabavna_cena['kolicina'];
- $zaliha_izlaz->save();
- $zaliha_prijem->save();
- }
- }
- KorisnikPodaci_ArtikliDokumenti::where('tip_dokumenta', 'Interna Otpremnica')->where('id_dokumenta', $interna_otpremnica_id)->delete();
- if($zaglavlje->nivelacija_id != -1) {
- (new NivelacijeController)->automatski_izmeniZaglavlje($zaglavlje->nivelacija_id, 25);
- (new NivelacijeController)->automatski_deleteNivelacija($zaglavlje->nivelacija_id, 25);
- }
- $zaglavlje->status = 'U pripremi';
- $zaglavlje->nivelacija_id = -1;
- $zaglavlje->save();
- return 1;
- }
- public static function potvrdiInternuOtpremnicu($interna_otpremnica_id) { // NAPRAVITI DA NE PRAVI NOVI UNOS AKO SE VALIDACIJA NEGDE TRIGGER ZA NEDOVOLJNO NA ZALIHAMA
- $zaglavlje = KorisnikPodaci_InternaOtpremnicaZaglavlja::findOrFail($interna_otpremnica_id);
- if($zaglavlje->status != "U pripremi")
- return 0;
- $objekat_izlaz_id = $zaglavlje->objekat_izlaz_id;
- $objekat_prijem_id = $zaglavlje->objekat_prijem_id;
- //$svi_artikli = KorisnikPodaci_InternaOtpremnicaArtikli::where('internaotpremnica_id', $zaglavlje->id)->get();
- $info_obracun = InternaOtpremnicaControllerBojke::generisiInfoObracun($interna_otpremnica_id, $artikli=0, $vratiArtikle=1);
- //$artikli_i_artikal_podaci = array(); // array u koji cu da stavim artikal i njegove podatke, sve odmah generisem da bih izbegao komplikacije
- //$io_nabavna_vrednost_sa_pdv_izlaz = 1;
- //$io_nabavna_vrednost_bez_pdv_izlaz = 2;
- // VALIDACIJE
- if($info_obracun['nedovoljno_zaliha'])
- return array("nedovoljno_zaliha" => 1, "nema_cene" => 0, "naziv_artikla" => $info_obracun['nedovoljno_zaliha_artikli'][0]['naziv_artikla'], "sifra_artikla" => $info_obracun['nedovoljno_zaliha_artikli'][0]['sifra_artikla']);
- foreach ($info_obracun['artikli_i_artikal_podaci'] as $artikal_i_artikal_podaci)
- if($artikal_i_artikal_podaci['artikal']->prodajna_cena_sa_pdv_prijem == 0)
- return array("nedovoljno_zaliha" => 0, "nema_cene" => 1, "naziv_artikla" => $artikal_i_artikal_podaci['artikal']->naziv_artikla, "sifra_artikla" => $artikal_i_artikal_podaci['artikal']->sifra_artikla);
- //$artikal_podaci = InternaOtpremnicaControllerBojke::generisiPodatkeArtikla($interna_otpremnica_id, $artikal);
- // if($artikal->prodajna_cena_sa_pdv_prijem == 0)
- // return array("nedovoljno_zaliha" => 0, "nema_cene" => 1, "naziv_artikla" => $artikal->naziv_artikla, "sifra_artikla" => $artikal->sifra_artikla);
- // if($artikal_podaci == -1)
- // return array("nedovoljno_zaliha" => 1, "nema_cene" => 0, "naziv_artikla" => $artikal->naziv_artikla, "sifra_artikla" => $artikal->sifra_artikla);
- // array_push($artikli_i_artikal_podaci, array($artikal, $artikal_podaci));
- // KRAJ VALIDACIJA
- $nivelacijaZaglavlje = -1;
- $redni_broj_stavke = 0;
- $poslednji_iz = -1;
- foreach ($info_obracun['artikli_i_artikal_podaci'] as $artikal_i_artikal_podaci) {
- $artikal = $artikal_i_artikal_podaci['artikal'];
- $artikal_podaci = $artikal_i_artikal_podaci['artikal_podaci'];
- $artikal->nabavne_cene_json = json_encode($artikal_podaci['nabavne_cene_json']);
- $artikal->prodajna_cena_sa_pdv_prijem = $artikal_podaci['prodajna_cena_sa_pdv_prijem'];
- $artikal->prodajna_cena_bez_pdv_prijem = $artikal_podaci['prodajna_cena_bez_pdv_prijem'];
- $artikal->prodajna_cena_sa_pdv_izlaz = $artikal_podaci['prodajna_cena_sa_pdv_izlaz'];
- $artikal->prodajna_cena_bez_pdv_izlaz = $artikal_podaci['prodajna_cena_bez_pdv_izlaz'];
- $artikal->save();
- $artikalNivelisan = 0;
- foreach ($artikal_podaci['nabavne_cene_json'] as $nabavna_cena) {
- $zaliha_izlaz = KorisnikPodaci_ZaliheObjekat::where('objekat_id', $objekat_izlaz_id)->where('sifra_artikla', $artikal->sifra_artikla)->where('nabavna_cena_sa_pdv', $nabavna_cena['nabavna_cena_sa_pdv'])->first();
- $zaliha_prijem = KorisnikPodaci_ZaliheObjekat::where('objekat_id', $objekat_prijem_id)->where('sifra_artikla', $artikal->sifra_artikla)->where('nabavna_cena_sa_pdv', $nabavna_cena['nabavna_cena_sa_pdv'])->first();
- $zaliha_prijem_druga_nabavna_cena = KorisnikPodaci_ZaliheObjekat::where('objekat_id', $objekat_prijem_id)->where('sifra_artikla', $artikal->sifra_artikla)->where('nabavna_cena_sa_pdv', '!=', $nabavna_cena['nabavna_cena_sa_pdv'])->first(); // da li u magacinu postoji vec neka zaliha, nebitno po kojoj nabavnoj ceni
- if(!$zaliha_prijem) {
- $zaliha_prijem = new KorisnikPodaci_ZaliheObjekat;
- $zaliha_prijem->trenutna_kolicina = 0;
- $zaliha_prijem->sifra_artikla = $artikal->sifra_artikla;
- $zaliha_prijem->naziv_artikla = $artikal->naziv_artikla;
- $zaliha_prijem->kataloska_oznaka = $zaliha_izlaz->kataloska_oznaka;
- $zaliha_prijem->barkod = $artikal->barkod;
- $zaliha_prijem->merna_jedinica = $artikal->merna_jedinica;
- $zaliha_prijem->nabavna_cena_bez_pdv = $nabavna_cena['nabavna_cena_bez_pdv'];
- $zaliha_prijem->nabavna_cena_sa_pdv = $nabavna_cena['nabavna_cena_sa_pdv'];
- $zaliha_prijem->prodajna_cena_sa_pdv = $artikal->prodajna_cena_sa_pdv_prijem;
- $zaliha_prijem->prodajna_cena_bez_pdv = $artikal->prodajna_cena_bez_pdv_prijem;
- $objekat_za_prijem = KorisnikPodaci_Magacini::findOrFail($objekat_prijem_id);
- $zaliha_prijem->tip_objekta = $objekat_za_prijem->tip;
- $zaliha_prijem->objekat_id = $objekat_prijem_id;
- }
- if($zaliha_prijem && $zaliha_prijem->prodajna_cena_sa_pdv != $artikal->prodajna_cena_sa_pdv_prijem || $zaliha_prijem_druga_nabavna_cena && $zaliha_prijem_druga_nabavna_cena->prodajna_cena_sa_pdv != $artikal->prodajna_cena_sa_pdv_prijem) {
- // odraditi nivelaciju ako se prodajna cena razlikuje od nove ILI ako ima druga prodajna cena po nekoj drugoj nabavnoj ceni u magacinu
- if(!$artikalNivelisan) {
- $artikalNivelisan = 1;
- if($nivelacijaZaglavlje==-1)
- $nivelacijaZaglavlje = (new NivelacijeController)->automatskaNivelacija_CreateZaglavljeiDokument($kompanija_id=25, $magacin_id=$objekat_prijem_id, $ulazni_dokument_id=NULL, $interna_otpremnica_id=$interna_otpremnica_id);
- $redni_broj_stavke++;
- //dd($nivelacijaZaglavlje, $nivelacijaZaglavlje['novi_dokument'], $nivelacijaZaglavlje['novi_dokument']->id);
- //dd($artikal)
- (new NivelacijeController)->automatskaNivelacija_novaStavka($kompanija_id=25, $id_dokumenta=$nivelacijaZaglavlje['novi_dokument']->id_dokumenta, $redni_broj_stavke=$redni_broj_stavke, $novi_dokument=$nivelacijaZaglavlje['novi_dokument'], $sifra_artikla=$artikal->sifra_artikla, $sa_pdv=$nivelacijaZaglavlje['sa_pdv'], $ns_cena= $nivelacijaZaglavlje['sa_pdv'] ? $artikal->prodajna_cena_sa_pdv_prijem : $artikal->prodajna_cena_bez_pdv_prijem);
- //if($artikal_nivelacija != 'true') dd($artikal);
- }
- }
- $zaliha_izlaz->trenutna_kolicina -= $nabavna_cena['kolicina'];
- $zaliha_izlaz->ukupna_kolicina_izlaz += $nabavna_cena['kolicina'];
- $zaliha_prijem->trenutna_kolicina += $nabavna_cena['kolicina'];
- $zaliha_prijem->ukupna_kolicina_ulaz += $nabavna_cena['kolicina'];
- // OVDE PROVERITI NIVELACIJU / PROMENU CENE, IZNIVELISATI AKO TREBA ILI SAMO PROMENITI CENU AKO TREBA
- $zaliha_izlaz->save();
- $zaliha_prijem->save();
- // artikli_dokumenti, obavezno nakon promene cene
- //IZLAZ ARTIKLI DOKUMENTI OVO FIX
- $artikli_dokumenti_izlaz = new KorisnikPodaci_ArtikliDokumenti;
- $artikli_dokumenti_izlaz->sifra_artikla = $zaliha_izlaz->sifra_artikla;
- $artikli_dokumenti_izlaz->datum_prometa = $zaglavlje->datum_prometa;
- $artikli_dokumenti_izlaz->id_dokumenta = $zaglavlje->id;
- $artikli_dokumenti_izlaz->tip_dokumenta = "Interna Otpremnica";
- $artikli_dokumenti_izlaz->tip_promene = "Izlaz";
- $artikli_dokumenti_izlaz->objekat_id = $objekat_izlaz_id;
- $artikli_dokumenti_izlaz->kolicina = $nabavna_cena['kolicina'];
- $artikli_dokumenti_izlaz->nabavna_cena = $nabavna_cena['nabavna_cena_bez_pdv'];
- $artikli_dokumenti_izlaz->prodajna_cena_sa_pdv = $zaliha_izlaz->prodajna_cena_sa_pdv;
- $artikli_dokumenti_izlaz->prodajna_cena_bez_pdv = $zaliha_izlaz->prodajna_cena_bez_pdv;
- $artikli_dokumenti_izlaz->trenutna_kolicina = $zaliha_izlaz->trenutna_kolicina;
- $artikli_dokumenti_izlaz->status = "Potvrdjen";
- $artikli_dokumenti_izlaz->save();
- //ULAZ ARTIKLI DOKUMENTI OVO FIX
- $artikli_dokumenti_ulaz = new KorisnikPodaci_ArtikliDokumenti;
- $artikli_dokumenti_ulaz->sifra_artikla = $zaliha_prijem->sifra_artikla;
- $artikli_dokumenti_ulaz->datum_prometa = $zaglavlje->datum_prometa;
- $artikli_dokumenti_ulaz->id_dokumenta = $zaglavlje->id;
- $artikli_dokumenti_ulaz->tip_dokumenta = "Interna Otpremnica";
- $artikli_dokumenti_ulaz->tip_promene = "Ulaz";
- $artikli_dokumenti_ulaz->objekat_id = $objekat_prijem_id;
- $artikli_dokumenti_ulaz->kolicina = $nabavna_cena['kolicina'];
- $artikli_dokumenti_ulaz->nabavna_cena = $nabavna_cena['nabavna_cena_bez_pdv'];
- $artikli_dokumenti_ulaz->prodajna_cena_sa_pdv = $artikal->prodajna_cena_sa_pdv_prijem;
- $artikli_dokumenti_ulaz->prodajna_cena_bez_pdv = $artikal->prodajna_cena_bez_pdv_prijem;
- $artikli_dokumenti_ulaz->trenutna_kolicina = $zaliha_prijem->trenutna_kolicina;
- $artikli_dokumenti_ulaz->status = "Potvrdjen";
- $artikli_dokumenti_ulaz->save();
- $poslednji_id = $artikli_dokumenti_ulaz->id;
- }
- }
- // OVDE IDE UPIS INFO POLJA U ZAGLAVLJE
- if($nivelacijaZaglavlje != -1) {
- //dd($nivelacijaZaglavlje['nova_nivelacija_zaglavlje']->id, $nivelacijaZaglavlje['novi_dokument']->id);
- $nivelacija_obracun = (new NivelacijeController)->automatskaNivelacija_sacuvajinfoobracunzaglavlje($kompanija_id=25, $tip_dokumenta=9, $nivelacija_id=$nivelacijaZaglavlje['nova_nivelacija_zaglavlje']->id, $id_dokumenta=$nivelacijaZaglavlje['novi_dokument']->id_dokumenta);
- $poslednji_id = (new NivelacijeController)->automatskaNivelacija_potvrdiZaglavlje($kompanija_id=25, $nivelacijaZaglavlje['nova_nivelacija_zaglavlje']->id);
- }
- $zaglavlje->io_nabavna_vrednost_bez_pdv_izlaz = $info_obracun['io_nabavna_vrednost_bez_pdv_izlaz'];
- $zaglavlje->io_ukalkulisana_razlika_u_ceni_izlaz = $info_obracun['io_ukalkulisana_razlika_u_ceni_izlaz'];
- $zaglavlje->io_prodajna_vrednost_bez_pdv_izlaz = $info_obracun['io_prodajna_vrednost_bez_pdv_izlaz'];
- $zaglavlje->io_prodajna_vrednost_sa_pdv_izlaz = $info_obracun['io_prodajna_vrednost_sa_pdv_izlaz'];
- $zaglavlje->io_nabavna_vrednost_bez_pdv_prijem = $info_obracun['io_nabavna_vrednost_bez_pdv_prijem'];
- $zaglavlje->io_ukalkulisana_razlika_u_ceni_prijem = $info_obracun['io_ukalkulisana_razlika_u_ceni_prijem'];
- $zaglavlje->io_prodajna_vrednost_bez_pdv_prijem = $info_obracun['io_prodajna_vrednost_bez_pdv_prijem'];
- $zaglavlje->io_prodajna_vrednost_sa_pdv_prijem = $info_obracun['io_prodajna_vrednost_sa_pdv_prijem'];
- $zaglavlje->izlazni_pdv_opsta_prijem = $info_obracun['izlazni_pdv_opsta_prijem'];
- $zaglavlje->izlazni_pdv_posebna_prijem = $info_obracun['izlazni_pdv_posebna_prijem'];
- $zaglavlje->izlazni_pdv_povlascena_prijem = $info_obracun['izlazni_pdv_povlascena_prijem'];
- $zaglavlje->izlazni_pdv_opsta_izlaz = $info_obracun['izlazni_pdv_opsta_izlaz'];
- $zaglavlje->izlazni_pdv_posebna_izlaz = $info_obracun['izlazni_pdv_posebna_izlaz'];
- $zaglavlje->izlazni_pdv_povlascena_izlaz = $info_obracun['izlazni_pdv_povlascena_izlaz'];
- $zaglavlje->nivelacija_id = $nivelacijaZaglavlje == -1 ? -1 : $nivelacijaZaglavlje['nova_nivelacija_zaglavlje']->id;
- $zaglavlje->artikli_dokumenti_poslednji_id = $poslednji_id;
- $zaglavlje->status = "Potvrdjen";
- $zaglavlje->save();
- //dd($potvrda, $potvrda2, $nivelacijaZaglavlje);
- return array('nedovoljno_zaliha' => 0, 'nema_cene' => 0);
- }
- public static function generisiInfoObracun($interna_otpremnica_id, $artikli=0, $vratiArtikle=0) {
- if(!$artikli)
- $artikli = KorisnikPodaci_InternaOtpremnicaArtikli::where('internaotpremnica_id', $interna_otpremnica_id)->get();
- $nedovoljno_zaliha = 0;
- $nedovoljno_zaliha_artikli = array();
- $nabavna_vrednost_bez_pdv = 0;
- $razlika_u_ceni_izlaz = 0;
- $prodajna_vrednost_bez_pdv_izlaz = 0;
- $prodajna_vrednost_sa_pdv_izlaz = 0;
- $razlika_u_ceni_prijem = 0;
- $prodajna_vrednost_bez_pdv_prijem = 0;
- $prodajna_vrednost_sa_pdv_prijem = 0;
- $izlazni_pdv_opsta_prijem = 0;
- $izlazni_pdv_posebna_prijem = 0;
- $izlazni_pdv_povlascena_prijem = 0;
- $artikli_i_artikal_podaci = array();
- foreach ($artikli as $artikal) {
- $artikal_podaci = InternaOtpremnicaControllerBojke::generisiPodatkeArtikla($interna_otpremnica_id, $artikal);
- if($artikal_podaci == -1) {
- $nedovoljno_zaliha = 1;
- array_push($nedovoljno_zaliha_artikli, array("naziv_artikla" => $artikal->naziv_artikla, "sifra_artikla" => $artikal->sifra_artikla));
- continue;
- }
- array_push($artikli_i_artikal_podaci, array('artikal' => $artikal, 'artikal_podaci' => $artikal_podaci));
- $nabavna_vrednost_bez_pdv += $artikal_podaci['nabavna_vrednost_bez_pdv'];
- $razlika_u_ceni_izlaz += $artikal_podaci['razlika_u_ceni_izlaz'];
- $prodajna_vrednost_bez_pdv_izlaz += $artikal_podaci['prodajna_vrednost_bez_pdv_izlaz'];
- $prodajna_vrednost_sa_pdv_izlaz += $artikal_podaci['prodajna_vrednost_sa_pdv_izlaz'];
- $razlika_u_ceni_prijem += $artikal_podaci['razlika_u_ceni_prijem'];
- $prodajna_vrednost_bez_pdv_prijem += $artikal_podaci['prodajna_vrednost_bez_pdv_prijem'];
- $prodajna_vrednost_sa_pdv_prijem += $artikal_podaci['prodajna_vrednost_sa_pdv_prijem'];
- switch ($artikal_podaci['pdv_procenat']) {
- case 20:
- $izlazni_pdv_opsta_prijem += $artikal_podaci['pdv_izlazni_prijem'];
- break;
- case 10:
- $izlazni_pdv_posebna_prijem += $artikal_podaci['pdv_izlazni_prijem'];
- break;
- case 8:
- $izlazni_pdv_povlascena_prijem += $artikal_podaci['pdv_izlazni_prijem'];
- break;
- }
- }
- return array(
- "io_nabavna_vrednost_bez_pdv_izlaz" => $nabavna_vrednost_bez_pdv,
- "io_ukalkulisana_razlika_u_ceni_izlaz" => $razlika_u_ceni_izlaz,
- "io_prodajna_vrednost_bez_pdv_izlaz" => $prodajna_vrednost_bez_pdv_izlaz,
- "io_prodajna_vrednost_sa_pdv_izlaz" => $prodajna_vrednost_sa_pdv_izlaz,
- "io_nabavna_vrednost_bez_pdv_prijem" => $nabavna_vrednost_bez_pdv,
- "io_ukalkulisana_razlika_u_ceni_prijem" => $razlika_u_ceni_prijem,
- "io_prodajna_vrednost_bez_pdv_prijem" => $prodajna_vrednost_bez_pdv_prijem,
- "io_prodajna_vrednost_sa_pdv_prijem" => $prodajna_vrednost_sa_pdv_prijem,
- "izlazni_pdv_opsta_prijem" => $izlazni_pdv_opsta_prijem,
- "izlazni_pdv_posebna_prijem" => $izlazni_pdv_posebna_prijem,
- "izlazni_pdv_povlascena_prijem" => $izlazni_pdv_povlascena_prijem,
- "izlazni_pdv_opsta_izlaz" => 0,
- "izlazni_pdv_posebna_izlaz" => 0,
- "izlazni_pdv_povlascena_izlaz" => 0,
- "nedovoljno_zaliha" => $nedovoljno_zaliha,
- "nedovoljno_zaliha_artikli" => $nedovoljno_zaliha_artikli,
- "artikli_i_artikal_podaci" => $vratiArtikle ? $artikli_i_artikal_podaci : 0
- );
- }
- public static function generisiPodatkeArtikla($interna_otpremnica_id, $artikal, $pregled=0) {
- $sifra_artikla = $artikal->sifra_artikla;
- $kolicina = $artikal->kolicina;
- $pdv_koeficijent = $artikal->pdv_procenat/100;
- $prodajna_cena_sa_pdv_prijem = $artikal->prodajna_cena_sa_pdv_prijem;
- $prodajna_cena_bez_pdv_prijem = $artikal->prodajna_cena_bez_pdv_prijem;
- if(!$pregled) {
- $objekat_izlaz = KorisnikPodaci_InternaOtpremnicaZaglavlja::findOrFail($interna_otpremnica_id)->objekat_izlaz_id;
- $objekat_izlaz_nabavne_cene_artikla = KorisnikPodaci_ZaliheObjekat::where('sifra_artikla', $sifra_artikla)->where('objekat_id', $objekat_izlaz)->orderBy('created_at');
- $ukupno_na_zalihama_za_objekat_izlaz = array_sum($objekat_izlaz_nabavne_cene_artikla->pluck('trenutna_kolicina')->toArray());
- if($kolicina > $ukupno_na_zalihama_za_objekat_izlaz)
- return -1;
- $nabavne_cene_artikla = $objekat_izlaz_nabavne_cene_artikla->get();
- }
- else {
- $nabavne_cene_artikla = json_decode($artikal->nabavne_cene_json, 1);
- $ukupno_na_zalihama_za_objekat_izlaz = 0;
- }
- $prodajna_cena_sa_pdv_izlaz = 0;
- $prodajna_cena_bez_pdv_izlaz = 0;
- // PROVERI PO KOJIM NABAVNIM CENAMA CE KOJA KOLICINA DA UZIMA IZ MAGACINA
- $artikal_nabavne_cene_json = array();
- $ostalo_kolicina = $kolicina;
- $nabavna_vrednost_sa_pdv = 0;
- $nabavna_vrednost_bez_pdv = 0;
- $prekini_sledeci_put = 0;
- //dd($nabavne_cene_artikla);
- foreach($nabavne_cene_artikla as $nabavna_cena) {
- if($prekini_sledeci_put) break;
- $prodajna_cena_sa_pdv_prijem = $artikal->prodajna_cena_sa_pdv_prijem;
- $prodajna_cena_bez_pdv_prijem = $artikal->prodajna_cena_bez_pdv_prijem;
- if(!$pregled) {
- $nabavna_cena_kolicina = $nabavna_cena->trenutna_kolicina;
- $nabavna_cena_sa_pdv = $nabavna_cena->nabavna_cena_sa_pdv;
- $nabavna_cena_bez_pdv = $nabavna_cena->nabavna_cena_bez_pdv;
- $prodajna_cena_sa_pdv_izlaz = $nabavna_cena->prodajna_cena_sa_pdv;
- $prodajna_cena_bez_pdv_izlaz = $nabavna_cena->prodajna_cena_bez_pdv;
- }
- else {
- //dd($nabavna_cena);
- $nabavna_cena_kolicina = $nabavna_cena['kolicina'];
- $nabavna_cena_sa_pdv = $nabavna_cena['nabavna_cena_sa_pdv'];
- $nabavna_cena_bez_pdv = $nabavna_cena['nabavna_cena_bez_pdv'];
- $prodajna_cena_sa_pdv_izlaz = $artikal->prodajna_cena_sa_pdv_izlaz;
- $prodajna_cena_bez_pdv_izlaz = $artikal->prodajna_cena_bez_pdv_izlaz;
- }
- if($ostalo_kolicina <= $nabavna_cena_kolicina) {
- $iskoriscena_kolicina_za_nabavnu_cenu = $ostalo_kolicina;
- $prekini_sledeci_put = 1;
- }
- else {
- $iskoriscena_kolicina_za_nabavnu_cenu = $nabavna_cena_kolicina;
- $ostalo_kolicina -= $nabavna_cena_kolicina;
- }
- array_push($artikal_nabavne_cene_json, array("kolicina"=>$iskoriscena_kolicina_za_nabavnu_cenu, "nabavna_cena_sa_pdv"=>$nabavna_cena_sa_pdv, "nabavna_cena_bez_pdv"=>$nabavna_cena_bez_pdv));
- // if($prodajna_cena_sa_pdv_prijem == -1 && $prodajna_cena_bez_pdv_prijem == -1) { // -1 je ako nije promenjena cena pri prebacivanju u drugi magacin. ako nije promenjena tj -1, koristiti cenu iz magacina iz koga se prebacuje
- // $prodajna_cena_sa_pdv_prijem = $prodajna_cena_sa_pdv_izlaz;
- // $artikal->prodajna_cena_sa_pdv_prijem = $prodajna_cena_sa_pdv_prijem;
- // $prodajna_cena_bez_pdv_prijem = $prodajna_cena_bez_pdv_izlaz;
- // $artikal->prodajna_cena_bez_pdv_prijem = $prodajna_cena_bez_pdv_prijem;
- // }
- $nabavna_vrednost_sa_pdv += $nabavna_cena_sa_pdv*$iskoriscena_kolicina_za_nabavnu_cenu;
- $nabavna_vrednost_bez_pdv += $nabavna_cena_bez_pdv*$iskoriscena_kolicina_za_nabavnu_cenu;
- }
- $pdv_iznos_preneseni = $nabavna_vrednost_sa_pdv - $nabavna_vrednost_bez_pdv;
- // IZLAZNI MAGACIN
- $prodajna_vrednost_sa_pdv_izlaz = $prodajna_cena_sa_pdv_izlaz * $kolicina;
- $prodajna_vrednost_bez_pdv_izlaz = $prodajna_cena_bez_pdv_izlaz * $kolicina;
- $pdv_iznos_izlaz_izlazni = $prodajna_vrednost_sa_pdv_izlaz - $prodajna_vrednost_bez_pdv_izlaz;
- $razlika_u_ceni_izlaz = $prodajna_vrednost_bez_pdv_izlaz - $nabavna_vrednost_bez_pdv;
- // PRIJEMNI MAGACIN
- $prodajna_vrednost_sa_pdv_prijem = $prodajna_cena_sa_pdv_prijem * $kolicina;
- $prodajna_vrednost_bez_pdv_prijem = $prodajna_cena_bez_pdv_prijem * $kolicina;
- $pdv_iznos_prijem_izlazni = $prodajna_vrednost_sa_pdv_prijem - $prodajna_vrednost_bez_pdv_prijem;
- $razlika_u_ceni_prijem = $prodajna_vrednost_bez_pdv_prijem - $nabavna_vrednost_bez_pdv;
- $pdv_po_jedinici_prijem= $prodajna_cena_sa_pdv_prijem - $prodajna_cena_bez_pdv_prijem;
- // KRAJ PROVERE, NAKON OVOGA JE FORMIRAN artikal_nabavne_cene_json
- // SRACUNAJ INFO POLJA, PDV, ITD ITD
- return array(
- "prodajna_cena_bez_pdv_prijem" => $prodajna_cena_bez_pdv_prijem,
- "prodajna_cena_sa_pdv_prijem" => $prodajna_cena_sa_pdv_prijem,
- "prodajna_vrednost_bez_pdv_prijem" => $prodajna_vrednost_bez_pdv_prijem,
- "prodajna_vrednost_sa_pdv_prijem" => $prodajna_vrednost_sa_pdv_prijem,
- "razlika_u_ceni_prijem" => $razlika_u_ceni_prijem,
- "pdv_izlazni_prijem" => $pdv_iznos_prijem_izlazni,
- "pdv_po_jedinici_prijem" => $pdv_po_jedinici_prijem,
- "prodajna_cena_bez_pdv_izlaz" => $prodajna_cena_bez_pdv_izlaz,
- "prodajna_cena_sa_pdv_izlaz" => $prodajna_cena_sa_pdv_izlaz,
- "prodajna_vrednost_bez_pdv_izlaz" => $prodajna_vrednost_bez_pdv_izlaz,
- "prodajna_vrednost_sa_pdv_izlaz" => $prodajna_vrednost_sa_pdv_izlaz,
- "razlika_u_ceni_izlaz" => $razlika_u_ceni_izlaz,
- "pdv_izlazni_izlaz" => $pdv_iznos_izlaz_izlazni,
- "nabavna_vrednost_bez_pdv" => $nabavna_vrednost_bez_pdv,
- "nabavna_vrednost_sa_pdv" => $nabavna_vrednost_sa_pdv,
- "pdv_preneseni" => $pdv_iznos_preneseni,
- "pdv_procenat" => $artikal->pdv_procenat,
- "nabavne_cene_json" => $artikal_nabavne_cene_json,
- "ukupno_na_zalihama_za_objekat_izlaz" => $ukupno_na_zalihama_za_objekat_izlaz
- );
- }
- // KRAJ SRACUNAVANJA
- public static function podaciZaPopunjavanjeModala($sifra_artikla, $zaglavlje, $kolicina, $artikal_podaci, $zalihe_objekat_izlaz=-1) {
- if($zalihe_objekat_izlaz==-1) {
- $objekat_izlaz_nabavne_cene_artikla = KorisnikPodaci_ZaliheObjekat::where('sifra_artikla', $sifra_artikla)->where('objekat_id', $zaglavlje->objekat_izlaz_id)->orderBy('created_at'); // PITATI GORANA DA POTVRDI PO CEMU SORTIRATI !!
- $zalihe_objekat_izlaz = array_sum($objekat_izlaz_nabavne_cene_artikla->pluck('trenutna_kolicina')->toArray()); // SRACUNATI UKUPNO NA ZALIHAMA
- }
- $objekat_ulaz_nabavne_cene_artikla = KorisnikPodaci_ZaliheObjekat::where('sifra_artikla', $sifra_artikla)->where('objekat_id', $zaglavlje->objekat_prijem_id);
- $zalihe_objekat_ulaz = array_sum($objekat_ulaz_nabavne_cene_artikla->pluck('trenutna_kolicina')->toArray());
- $zalihe_objekat_izlaz_novo = $zalihe_objekat_izlaz - $kolicina;
- $zalihe_objekat_ulaz_novo = $zalihe_objekat_ulaz + $kolicina;
- return array(
- "artikal_podaci" => $artikal_podaci,
- "zalihe_izlaz_staro" => $zalihe_objekat_izlaz,
- "zalihe_izlaz_novo" => $zalihe_objekat_izlaz_novo,
- "zalihe_ulaz_staro" => $zalihe_objekat_ulaz,
- "zalihe_ulaz_novo" => $zalihe_objekat_ulaz_novo
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement