Nabavke/Servis: nabavna cena u modalu, QR kod na otpremnici
- Modal +Novi artikal u nabavkama dobio polje nabavne cene pored prodajne - QR kod dodat u zaglavlje otpremnice (isti mehanizam kao na radnom nalogu)
This commit is contained in:
@@ -680,6 +680,7 @@ type PodaciOtpremnice struct {
|
|||||||
UkupnoDelovi float64
|
UkupnoDelovi float64
|
||||||
PreostaloSve float64
|
PreostaloSve float64
|
||||||
ImaAvans bool
|
ImaAvans bool
|
||||||
|
QRKod string
|
||||||
Klijent *model.Klijent
|
Klijent *model.Klijent
|
||||||
KlijentNaziv string
|
KlijentNaziv string
|
||||||
TehnicarNaziv string
|
TehnicarNaziv string
|
||||||
@@ -757,12 +758,23 @@ func (h *Handler) StampaOtpremnice(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nalogURL := "http"
|
||||||
|
if r.TLS != nil {
|
||||||
|
nalogURL += "s"
|
||||||
|
}
|
||||||
|
nalogURL += "://" + r.Host + "/servis/" + strconv.FormatInt(id, 10)
|
||||||
|
var qrKodOtpr string
|
||||||
|
if png, err := qrcode.Encode(nalogURL, qrcode.Medium, 160); err == nil {
|
||||||
|
qrKodOtpr = base64.StdEncoding.EncodeToString(png)
|
||||||
|
}
|
||||||
|
|
||||||
h.renderujStandalone(w, "servis_otpremnica", PodaciOtpremnice{
|
h.renderujStandalone(w, "servis_otpremnica", PodaciOtpremnice{
|
||||||
Nalog: *nalog,
|
Nalog: *nalog,
|
||||||
ServisniDelovi: delovi,
|
ServisniDelovi: delovi,
|
||||||
UkupnoDelovi: ukupnoDelovi,
|
UkupnoDelovi: ukupnoDelovi,
|
||||||
PreostaloSve: preostaloSve,
|
PreostaloSve: preostaloSve,
|
||||||
ImaAvans: imaAvans,
|
ImaAvans: imaAvans,
|
||||||
|
QRKod: qrKodOtpr,
|
||||||
Klijent: klijent,
|
Klijent: klijent,
|
||||||
KlijentNaziv: klijentNaziv,
|
KlijentNaziv: klijentNaziv,
|
||||||
TehnicarNaziv: tehnicarNaziv,
|
TehnicarNaziv: tehnicarNaziv,
|
||||||
|
|||||||
@@ -201,6 +201,7 @@ document.addEventListener('alpine:init', () => {
|
|||||||
modalOpis: '',
|
modalOpis: '',
|
||||||
modalKolicina: '',
|
modalKolicina: '',
|
||||||
modalKolicinaMin: '',
|
modalKolicinaMin: '',
|
||||||
|
modalNabavnaCena: '',
|
||||||
modalCena: '',
|
modalCena: '',
|
||||||
modalLokacija: '',
|
modalLokacija: '',
|
||||||
modalNapomena: '',
|
modalNapomena: '',
|
||||||
@@ -313,6 +314,7 @@ document.addEventListener('alpine:init', () => {
|
|||||||
this.modalOpis = ''
|
this.modalOpis = ''
|
||||||
this.modalKolicina = ''
|
this.modalKolicina = ''
|
||||||
this.modalKolicinaMin = ''
|
this.modalKolicinaMin = ''
|
||||||
|
this.modalNabavnaCena = ''
|
||||||
this.modalCena = ''
|
this.modalCena = ''
|
||||||
this.modalLokacija = ''
|
this.modalLokacija = ''
|
||||||
this.modalNapomena = ''
|
this.modalNapomena = ''
|
||||||
@@ -334,6 +336,7 @@ document.addEventListener('alpine:init', () => {
|
|||||||
params.append('opis', this.modalOpis.trim())
|
params.append('opis', this.modalOpis.trim())
|
||||||
if (this.modalKolicina) params.append('kolicina', this.modalKolicina)
|
if (this.modalKolicina) params.append('kolicina', this.modalKolicina)
|
||||||
if (this.modalKolicinaMin) params.append('kolicina_min', this.modalKolicinaMin)
|
if (this.modalKolicinaMin) params.append('kolicina_min', this.modalKolicinaMin)
|
||||||
|
if (this.modalNabavnaCena) params.append('nabavna_cena', this.modalNabavnaCena)
|
||||||
if (this.modalCena) params.append('prodajna_cena', this.modalCena)
|
if (this.modalCena) params.append('prodajna_cena', this.modalCena)
|
||||||
params.append('lokacija', this.modalLokacija.trim())
|
params.append('lokacija', this.modalLokacija.trim())
|
||||||
params.append('napomena', this.modalNapomena.trim())
|
params.append('napomena', this.modalNapomena.trim())
|
||||||
|
|||||||
@@ -317,11 +317,17 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:12px;">
|
||||||
<label class="polje-labela">Prodajna cena (din)</label>
|
<div>
|
||||||
<input type="number" x-model="modalCena" min="0" step="0.01"
|
<label class="polje-labela">Nabavna cena (din)</label>
|
||||||
placeholder="0"
|
<input type="number" x-model="modalNabavnaCena" min="0" step="0.01"
|
||||||
style="width:100%;">
|
placeholder="0" style="width:100%;">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="polje-labela">Prodajna cena (din)</label>
|
||||||
|
<input type="number" x-model="modalCena" min="0" step="0.01"
|
||||||
|
placeholder="0" style="width:100%;">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -88,12 +88,19 @@
|
|||||||
{{if .PIB}}PIB: {{.PIB}}{{end}}
|
{{if .PIB}}PIB: {{.PIB}}{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dok-naslov">
|
<div style="display:flex;align-items:flex-start;gap:14px;">
|
||||||
<div class="dok-tip">Otpremnica</div>
|
<div class="dok-naslov">
|
||||||
<div class="dok-broj">{{.Nalog.BrojNaloga}}</div>
|
<div class="dok-tip">Otpremnica</div>
|
||||||
<div class="dok-datum">Datum: {{.Nalog.DatumPrijema.Format "02.01.2006."}}</div>
|
<div class="dok-broj">{{.Nalog.BrojNaloga}}</div>
|
||||||
{{if .Nalog.DatumZavrsetka}}
|
<div class="dok-datum">Datum: {{.Nalog.DatumPrijema.Format "02.01.2006."}}</div>
|
||||||
<div class="dok-datum">Završeno: {{.Nalog.DatumZavrsetka.Format "02.01.2006."}}</div>
|
{{if .Nalog.DatumZavrsetka}}
|
||||||
|
<div class="dok-datum">Završeno: {{.Nalog.DatumZavrsetka.Format "02.01.2006."}}</div>
|
||||||
|
{{end}}
|
||||||
|
</div>
|
||||||
|
{{if .QRKod}}
|
||||||
|
<img src="data:image/png;base64,{{.QRKod}}" width="76" height="76"
|
||||||
|
alt="QR {{.Nalog.BrojNaloga}}"
|
||||||
|
style="image-rendering:pixelated;border:1px solid #ddd;border-radius:4px;flex-shrink:0;">
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user