unit frmUnit8; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ddPlugin_TLB, helUtils, Vcl.Buttons, Vcl.Menus, Vcl.ComCtrls, Vcl.StdCtrls, Vcl.Mask, RzEdit; const sklProOdvodDP = '200'; radaOdvedDP = '240'; radaVydejDP = '470'; errPlg = #13#10 + '(plgLOVATO,unit8)'; rDoklVydMat = '400'; sklProMatDP = '20000105'; type TformPrijemkaNadvyroba = class(TForm) GroupBox2: TGroupBox; btnOK: TButton; btnCancel: TButton; Label4: TLabel; Label5: TLabel; Label1: TLabel; dtPicker: TDateTimePicker; Label2: TLabel; Label3: TLabel; Label6: TLabel; Label7: TLabel; lblSZ: TLabel; lblRegCis: TLabel; lblNazev: TLabel; lblCisZam: TLabel; lblZamest: TLabel; edtMnoz: TRzNumericEdit; lblPrikaz: TLabel; procedure FormShow(Sender: TObject); procedure btnCancelClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormActivate(Sender: TObject); procedure btnOKClick(Sender: TObject); procedure edtMnozKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private helParams: THeliosParams; procedure NastavFonty; procedure NactiPolozkuKoopObj; public idPKObj: integer; Helios: IHelios; end; var formPrijemkaNadvyroba: TformPrijemkaNadvyroba; idKO,idKZ,idVPr,dokl: integer; idCOrgDP: integer; cZam: shortString; implementation uses System.StrUtils, System.DateUtils; {$R *.dfm} procedure TformPrijemkaNadvyroba.NactiPolozkuKoopObj; var locSQL: WideString; begin with Helios.OpenSQL('SELECT id FROM ' + tblPrikaz + ' WHERE StavPrikazu IN (30,40) AND kusy_zive>0 AND id=' + IntToStr(idVPr)) do if RecordCount>0 then begin if idPKObj>0 then begin locSQL:= 'SELECT (pko.Kusy-pko.KusyPrevedene),kz.SkupZbo,kz.RegCis,kz.Nazev1,cz.PrijmeniJmeno,cz.Cislo,ko.id,'; locSQL:= locSQL + 'kz.id,p.id,pko.DokladPrPostup FROM ' + tblPKObj + ' pko INNER JOIN ' + tblPrikaz + ' p ON (pko.IdPrikaz=p.Id)'; locSQL:= locSQL + ' INNER JOIN ' + tblKZ + ' kz ON (p.IdTabKmen=kz.id) INNER JOIN ' + tblKObj + ' ko ON'; locSQL:= locSQL + ' (pko.IDObjednavky=ko.id) INNER JOIN ' + tblCZam + ' cz ON (ko.IdZamestnance=cz.id) WHERE'; locSQL:= locSQL + ' pko.id=' + IntToStr(idPKObj) + ' AND ko.IDOrganizace=' + IntToStr(idCOrgDP); with Helios.OpenSQL(locSQL) do if RecordCount>0 then begin edtMnoz.Value:= StrToFloat(VarToStr(FieldValues(0))); lblSZ.Caption:= VarToStr(FieldValues(1)); lblRegCis.Caption:= VarToStr(FieldValues(2)); lblNazev.Caption:= VarToStr(FieldValues(3)); lblZamest.Caption:= VarToStr(FieldValues(4)); lblCisZam.Caption:= VarToStr(FieldValues(5)); cZam:= lblCisZam.Caption; lblCisZam.Caption:= StringOfChar('0',6-Length(cZam)) + cZam; idKO:= StrToInt(VarToStr(FieldValues(6))); idKZ:= StrToInt(VarToStr(FieldValues(7))); // idVPr:= StrToInt(VarToStr(FieldValues(8))); dokl:= StrToInt(VarToStr(FieldValues(9))); end; end; end else begin locSQL:= #1'Na příkaze nejsou už žádné živé kusy, nelze dělat další příjemku.'#1 + CRLF + 'Pokud i přesto chcete'; locSQL:= locSQL + ' zaevidovat příjemku, kontaktujte' + CRLF + 'firmu NTS Strakonice, konzultanty Heliosu, modul Výroba.'; Helios.Error(locSQL); btnOK.Enabled:= false; edtMnoz.Enabled:= false; Close; end; end; procedure TformPrijemkaNadvyroba.btnCancelClick(Sender: TObject); begin Close; end; procedure TformPrijemkaNadvyroba.btnOKClick(Sender: TObject); var locSQL,podm: WideString; idPMaZ,idDZ,idPZ,cKoop,idDZshift,idPrKVaz,GidKZ: integer; jc,cc,kurz,qDat,GidSS,Gdokl,mnTxt,idObd,dt: shortString; mnoz,mnReal: Extended; realVyd, realPrij: boolean; begin jc:= '0.05'; kurz:= '25'; realVyd:= false; realPrij:= false; dt:= DateToStr(dtPicker.Date) + ' ' + TimeToStr(Now); idObd:= '0'; locSQL:= 'DECLARE @obd INT,@dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(dt) + ',104)'; locSQL:= locSQL + CRLF + 'EXEC @obd=dbo.hp_GetObdobiDleDatumu @dt,0,null,null,0,0' + CRLF + 'SELECT @obd'; with Helios.OpenSQL(locSQL) do idObd:= VarToStr(FieldValues(0)); with Helios.OpenSQL('SELECT id FROM dbo.TabCKoop WHERE Rada=N' + QuotedStr('105')) do cKoop:= StrToInt(VarToStr(FieldValues(0))); locSQL:= 'SELECT CelniKurz FROM ' + tblKList + ' WHERE Mena=N' + QuotedStr('EUR') + ' AND Datum_Y='; locSQL:= locSQL + IntToStr(YearOf(dtPicker.Date)) + ' AND Datum_M=' + IntToStr(MonthOf(dtPicker.Date)); locSQL:= locSQL + ' ORDER BY Cislo desc'; with Helios.OpenSQL(locSQL) do if RecordCount>0 then kurz:= VarToStr(FieldValues(0)); with Helios.OpenSQL('SELECT Mat FROM ' + tblZaKalk + ' WHERE dilec=' + IntToStr(idKZ)) do if RecordCount>0 then jc:= VarToStr(FieldValues(0)); jc:= FloatToStr(StrToFloat(jc) * StrToFloat(kurz)); cc:= FloatToStr(StrToFloat(jc) * edtMnoz.Value); jc:= StringReplace(jc,',','.',[rfReplaceAll]); cc:= StringReplace(cc,',','.',[rfReplaceAll]); ReseedTable(Helios,tblMzdZm); idPMaZ:= 0; Helios.ExecSQL('INSERT ' + tblMzdZm + ' (TypMzdy,BlokovaniEditoru) VALUES (2,1)'); with Helios.OpenSQL('SELECT SCOPE_IDENTITY()') do idPMaZ:= StrToInt(VarToStr(FieldValues(0))); mnTxt:= StringReplace(edtMnoz.Text,' ','',[rfReplaceAll]); locSQL:= 'UPDATE ' + tblMzdZm + ' SET Datum=CONVERT(datetime,N' + QuotedStr(dt) + ',104)'; locSQL:= locSQL + ',Stav=0,IDKoopObj=' + IntToStr(idKO) + ',IDPolKoopObj=' + IntToStr(idPKObj) + ',IDPrikaz=' + IntToStr(idVPr); locSQL:= locSQL + ',IDTabKmen=' + IntToStr(idKZ) + ',kusy_odv=' + StringReplace(mnTxt,',','.',[rfReplaceAll]); locSQL:= locSQL + ',DokladPrPostup=' + IntToStr(dokl) + ',IDDodavatel=' + IntToStr(idCOrgDP) + ',AltPrPostup=N' + QuotedStr('A'); locSQL:= locSQL + ',Operace_odv=' + StringReplace(mnTxt,',','.',[rfReplaceAll]) + ',BlokovaniEditoru=null'; locSQL:= locSQL + ',IDKooperace=' + IntToStr(cKoop); locSQL:= locSQL + ' WHERE id=' + IntToStr(idPMaZ); try Helios.ExecSQL(locSQL); except on E:Exception do Helios.Error(#1'Chyba při ukládání záznamu evidence Nadvýroby.'#1 + CRLF + E.Message + locSQL + errPlg); end; if idPMaZ>0 then begin idDZ:= 0; locSQL:= 'IF OBJECT_ID(' + QuotedStr('tempdb..#TabGenRezVyd') + ') IS NOT NULL DROP TABLE #TabGenRezVyd' + CRLF; locSQL:= locSQL + 'CREATE TABLE #TabGenRezVyd(ID INT NOT NULL)'; Helios.ExecSQL(locSQL); locSQL:= 'IF OBJECT_ID(' + QuotedStr('tempdb..#TabOdved') + ') IS NOT NULL DROP TABLE #TabOdved' + CRLF; locSQL:= locSQL + 'CREATE TABLE #TabOdved (id int identity, IDPrikaz int NOT NULL, IDDilec int NOT NULL, IDZakazka int, maxMnozstvi NUMERIC(19,6)'; locSQL:= locSQL + ',mnozstvi NUMERIC(19,6) NOT NULL, EvidJednotka INT NOT NULL, Sklad NVARCHAR(30), KodUmisteni NVARCHAR(15) )'; Helios.ExecSQL(locSQL); locSQL:= 'INSERT #TabOdved (IDPrikaz,IDDilec,Mnozstvi,EvidJednotka,Sklad) VALUES ('; locSQL:= locSQL + IntToStr(idVPr) + ',' + IntToStr(idKZ) + ',' + StringReplace(mnTxt,',','.',[rfReplaceAll]); locSQL:= locSQL + ',1,N' + QuotedStr(sklProOdvodDP) + ')'; Helios.ExecSQL(locSQL); locSQL:= 'IF OBJECT_ID(' + QuotedStr('tempdb..#TabPrKVazbyGen') + ') IS NOT NULL DROP TABLE #TabPrKVazbyGen' + CRLF; locSQL:= locSQL + 'CREATE TABLE #TabPrKVazbyGen(ID INT IDENTITY NOT NULL, Generuj BIT NOT NULL DEFAULT 1,'; locSQL:= locSQL + 'PoKorekciDat BIT NOT NULL DEFAULT 0, IDPrKV INT NOT NULL, Doklad INT NOT NULL, IDPrikaz INT NOT NULL,'; locSQL:= locSQL + 'Prednastaveno BIT NOT NULL DEFAULT 1, Sklad NVARCHAR(30) COLLATE database_default NULL,'; locSQL:= locSQL + 'VyrStredisko NVARCHAR(30) COLLATE database_default NULL, IDPracoviste INT NULL,'; locSQL:= locSQL + 'mnoz_zad NUMERIC(19, 6) NOT NULL DEFAULT 0, Mnoz_nepotrebne NUMERIC(19, 6) NOT NULL DEFAULT 0,'; locSQL:= locSQL + 'Mnoz_skut_realizovane NUMERIC(19, 6) NOT NULL DEFAULT 0, Cena_real NUMERIC(19, 6) NOT NULL DEFAULT 0,'; locSQL:= locSQL + 'Mnoz_odv NUMERIC(19, 6) NOT NULL DEFAULT 0, Cena_odv NUMERIC(19, 6) NOT NULL DEFAULT 0,'; locSQL:= locSQL + 'MnozstviMax NUMERIC(19, 6) NULL, MnozstviPoz NUMERIC(19, 6) NOT NULL, PomMnozPoz NUMERIC(19, 6) NOT NULL DEFAULT 0,'; locSQL:= locSQL + 'IDPohZbo INT NULL, priorita INT NOT NULL DEFAULT 0, vyssi INT NOT NULL, nizsi INT NOT NULL,'; locSQL:= locSQL + 'DavkaTPV NUMERIC(19, 6) NOT NULL DEFAULT 1, pozice NVARCHAR(100) COLLATE database_default NULL DEFAULT '''','; locSQL:= locSQL + 'Operace NCHAR(4) COLLATE database_default NULL DEFAULT '''', FixniMnozstvi NUMERIC(19, 6) NOT NULL DEFAULT 0,'; locSQL:= locSQL + 'mnozstvi NUMERIC(19, 6) NOT NULL DEFAULT 1, ProcZtrat NUMERIC(5, 2) NOT NULL DEFAULT 0,'; locSQL:= locSQL + 'mnozstviSeZtratou NUMERIC(19, 6) NOT NULL DEFAULT 0, Prirez NUMERIC(19, 6) NOT NULL DEFAULT 1,'; locSQL:= locSQL + 'Poznamka NTEXT COLLATE database_default NULL, pom_pomer_A NUMERIC(19, 6) NULL,'; locSQL:= locSQL + 'pom_pomer_B NUMERIC(19, 6) NULL, Dodavatel INT NULL)'; Helios.ExecSQL(locSQL); locSQL:= 'DECLARE @RespekExistDoklady bit' + CRLF + 'SELECT @RespekExistDoklady=0' + CRLF; locSQL:= locSQL + 'INSERT INTO #TabPrKVazbyGen (IDPrKV, MnozstviPoz, pom_pomer_A, pom_pomer_B, Doklad, IDPrikaz,'; locSQL:= locSQL + 'Prednastaveno, Sklad, VyrStredisko, IDPracoviste, mnoz_zad, Mnoz_nepotrebne, Mnoz_skut_realizovane,'; locSQL:= locSQL + 'Cena_real, Mnoz_odv, Cena_odv, priorita, vyssi, nizsi, DavkaTPV, pozice, Operace, FixniMnozstvi,'; locSQL:= locSQL + 'mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka) SELECT PrKV.ID, PrKV.mnoz_zad*O.mnozstvi/P.kusy_zad'; locSQL:= locSQL + '-CASE WHEN @RespekExistDoklady=1 THEN PrKV.VydanoRefMnoz + (SELECT ISNULL(SUM(PZ2.prepmnozstvi*(PZ2.mnozstvi'; locSQL:= locSQL + '-PZ2.MnOdebrane) * PrKV2.RefMnoz / PrKV2.mnoz_zad), 0.0) FROM TabPohybyZbozi PZ2 INNER JOIN TabStavSkladu SS2 ON (SS2.ID=PZ2.IDZboSklad)'; locSQL:= locSQL + ' INNER JOIN TabPrKVazby PrKV2 ON (PrKV2.IDPrikaz=PZ2.IDPrikaz AND PrKV2.Doklad=PZ2.DokladPrikazu AND '; locSQL:= locSQL + 'PrKV2.nizsi=SS2.IDKmenZbozi AND PrKV2.IDOdchylkyDo IS NULL) WHERE PZ2.TypVyrobnihoDokladu=1 AND '; locSQL:= locSQL + 'PZ2.IDPrikaz=PrKV.IDPrikaz AND PZ2.DokladPrikazu=PrKV.Doklad AND PZ2.druhPohybuZbo IN (2,4,9,10) AND '; locSQL:= locSQL + 'PZ2.SkutecneDatReal IS NULL) ELSE 0.0 END, CASE WHEN @RespekExistDoklady=0 THEN O.mnozstvi END,'; locSQL:= locSQL + 'CASE WHEN @RespekExistDoklady=0 THEN P.kusy_zad END,PrKV.Doklad, PrKV.IDPrikaz, PrKV.Prednastaveno,'; locSQL:= locSQL + 'PrKV.Sklad, PrKV.VyrStredisko, PrKV.IDPracoviste, PrKV.mnoz_zad, PrKV.Mnoz_nepotrebne, PrKV.Mnoz_skut_realizovane,'; locSQL:= locSQL + 'PrKV.Cena_real, PrKV.Mnoz_odv, PrKV.Cena_odv, PrKV.priorita, PrKV.vyssi, PrKV.nizsi, PrKV.DavkaTPV,'; locSQL:= locSQL + 'PrKV.pozice, PrKV.Operace, PrKV.FixniMnozstvi, PrKV.mnozstvi, PrKV.ProcZtrat, PrKV.mnozstviSeZtratou,'; locSQL:= locSQL + 'PrKV.Prirez, PrKV.Poznamka FROM (SELECT IDPrikaz=O1.IDPrikaz, Mnozstvi=SUM(O1.mnozstvi)'; locSQL:= locSQL + ' + CASE WHEN @RespekExistDoklady=1 THEN MAX(P1.kusy_odved+P1.kusy_ztrac+P1.kusy_zmet)'; locSQL:= locSQL + ' + (SELECT ISNULL(SUM(PZ1.prepmnozstvi*PZ1.mnozstvi), 0.0) FROM TabPohybyZbozi PZ1 WHERE PZ1.TypVyrobnihoDokladu=0'; locSQL:= locSQL + ' AND PZ1.IDPrikaz=O1.IDPrikaz AND PZ1.druhPohybuZbo=0 AND PZ1.SkutecneDatReal IS NULL) ELSE 0.0 END'; locSQL:= locSQL + ' FROM #TabOdved O1 INNER JOIN ' + tblPrikaz + ' P1 ON (P1.ID=O1.IDPrikaz) GROUP BY O1.IDPrikaz) O'; locSQL:= locSQL + ' INNER JOIN ' + tblPrikaz + ' P ON (P.ID=O.IDPrikaz AND P.StavPrikazu IN (30,50)) INNER JOIN TabRadyPrikazu RP ON (RP.rada=P.rada)'; locSQL:= locSQL + ' INNER JOIN ' + tblPrVaz + ' PrKV ON (PrKV.IDPrikaz=O.IDPrikaz AND PrKV.predzpracovano=0 AND PrKV.prednastaveno=1'; locSQL:= locSQL + ' AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND PrKV.IDOdchylkyDo IS NULL) INNER JOIN ' + tblKZ + ' KZ ON'; locSQL:= locSQL + ' (KZ.ID=PrKV.nizsi AND KZ.sluzba=0) WHERE (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0)'; Helios.ExecSQL(locSQL); locSQL:= 'UPDATE G SET MnozstviMax=CASE WHEN RP.NekontrolovatMnozMatPol=1 THEN NULL ELSE (CASE WHEN PrKV.splneno=1'; locSQL:= locSQL + ' THEN 0.0 ELSE PrKV.mnoz_zad-PrKV.VydanoRefMnoz*PrKV.mnoz_zad/PrKV.RefMnoz END) END FROM #TabPrKVazbyGen G'; locSQL:= locSQL + ' INNER JOIN TabPrKVazby PrKV ON (PrKV.ID=G.IDPrKV) INNER JOIN TabPrikaz P ON (P.ID=PrKV.IDPrikaz)'; locSQL:= locSQL + ' INNER JOIN TabRadyPrikazu RP ON (RP.rada=P.rada)' + CRLF; locSQL:= locSQL + 'UPDATE #TabPrKVazbyGen SET mnozstviPoz=CEILING(mnozstviPoz) FROM #TabPrKVazbyGen G INNER JOIN'; locSQL:= locSQL + ' TabPrKVazby PrKV ON (PrKV.ID=G.IDPrKV) INNER JOIN TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi)'; locSQL:= locSQL + ' INNER JOIN TabMJ MJ ON (MJ.kod=KZ.MJEvidence AND MJ.nedelitelna=1) WHERE G.PoKorekciDat=0' + CRLF; locSQL:= locSQL + 'UPDATE #TabPrKVazbyGen SET mnozstviPoz=MnozstviMax WHERE MnozstviMax IS NOT NULL AND mnozstviPoz>MnozstviMax'; locSQL:= locSQL + CRLF + 'DELETE #TabPrKVazbyGen WHERE MnozstviPoz<=0.0 AND PoKorekciDat=0' + CRLF; locSQL:= locSQL + 'UPDATE G SET Dodavatel=CO.ID FROM #TabPrKVazbyGen G INNER JOIN TabPrKVazby PrKV ON (PrKV.ID=G.IDPrKV)'; locSQL:= locSQL + ' INNER JOIN TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi) INNER JOIN TabCisOrg CO ON (CO.CisloOrg=KZ.Aktualni_Dodavatel)'; locSQL:= locSQL + ' WHERE G.PoKorekciDat=0 AND G.Dodavatel IS NULL' + CRLF + 'UPDATE #TabPrKVazbyGen SET PoKorekciDat=1 WHERE PoKorekciDat=0'; locSQL:= locSQL + CRLF + 'UPDATE #TabPrKVazbyGen SET Generuj=1'; Helios.ExecSQL(locSQL); locSQL:= 'SELECT vazGen.IDPrKV, vazGen.Doklad, vazGen.nizsi, ss.id, vazGen.MnozstviPoz'; locSQL:= locSQL + ' FROM #TabPrKVazbyGen vazGen'; locSQL:= locSQL + ' LEFT OUTER JOIN TabKmenZbozi kz ON (vazGen.nizsi=kz.ID)'; locSQL:= locSQL + ' LEFT OUTER JOIN TabStavSkladu ss ON (ss.IDSklad=N' + QuotedStr(sklProMatDP) + ' AND ss.IDKmenZbozi=vazGen.nizsi)'; with Helios.OpenSQL(locSQL) do if RecordCount>0 then begin podm:= 'Obdobi=' + idObd + ' AND DruhPohybuZbo=4 AND RadaDokladu=N' + QuotedStr(rDoklVydMat); podm:= podm + ' AND IDSklad=N' + QuotedStr(sklProMatDP); idDZshift:= NajdiPrvniVolny(Helios,'TabDokladyZbozi','PoradoveCislo','4',rDoklVydMat,idObd,podm); locSQL:= 'DECLARE @i INT,@dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(dt) + ',104)'; locSQL:= locSQL + CRLF + 'EXEC dbo.hp_InsertHlavickyOZ @i OUT,@sklad=N' + QuotedStr(sklProMatDP) + ',@DatumPorizeni=@dt'; locSQL:= locSQL + ',@DruhPohybu=4,@RadaDokladu=N' + QuotedStr(rDoklVydMat) + ',@CisloOrg=0,@Mena=N'; locSQL:= locSQL + QuotedStr('CZK') + ',@Insert=1,@PC=' + IntToStr(idDZshift) + CRLF + 'SELECT @i'; idDZ:= 0; try with Helios.OpenSQL(locSQL) do if not VarIsNull(FieldValues(0)) then idDZ:= StrToInt(VarToStr(FieldValues(0))); except on E:Exception do Helios.Error(#1'Nelze uložit hlavičku Výdejky materiálu.'#1 + CRLF + E.Message + errPlg); end; if idDZ>0 then begin Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=' + IntToStr(Helios.UserId) + ' WHERE id=' + IntToStr(idDZ)); First; while not(EOF) do begin idPrKVaz:= StrToInt(VarToStr(FieldValues(0))); Gdokl:= VarToStr(FieldValues(1)); GidKZ:= StrToInt(VarToStr(FieldValues(2))); GidSS:= VarToStr(FieldValues(3)); if GidSS='' then begin Helios.ExecSQL('INSERT ' + tblSS + ' (IDSklad,IDKmenZbozi) VALUES (N' + QuotedStr(sklProMatDP) + ',' + IntToStr(GidKZ) + ')'); with Helios.OpenSQL('SELECT SCOPE_IDENTITY()') do GidSS:= VarToStr(FieldValues(0)); end; mnoz:= StrToFloat(VarToStr(FieldValues(4))); mnReal:= 0; with Helios.OpenSQL('SELECT Mnoz_odv FROM ' + tblPrVaz + ' WHERE id=' + IntToStr(idPrKVaz)) do if RecordCount>0 then mnReal:= StrToFloat(VarToStr(FieldValues(0))); mnReal:= mnReal + mnoz; locSQL:= 'DECLARE @i INT,@dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(dt) + ',104)'; locSQL:= locSQL + CRLF + 'EXEC dbo.hp_InsertPolozkyOZ @i OUT,@IDDoklad=' + IntToStr(idDZ); locSQL:= locSQL + ',@DruhPohybu=4,@CisloOrg=0,@IDZboSklad=' + GidSS + ',@Mena=N' + QuotedStr('CZK'); locSQL:= locSQL + ',@JednotkaMeny=1,@Kurz=1'; locSQL:= locSQL + ',@VstupniCena=0,@JCbezDaniKC=0.1,@KurzEuro=1,@SazbaSD=0,@SazbaDPH=0,@ZakazanoDPH=0'; locSQL:= locSQL + ',@Selectem=0,@Mnozstvi=' + StringReplace(FloatToStr(mnoz),',','.',[rfReplaceAll]); locSQL:= locSQL + ',@DatPorizeni=@dt,@PovolitDuplicitu=1' + CRLF + 'SELECT @i'; idPZ:= 0; with Helios.OpenSQL(locSQL) do if not VarIsNull(FieldValues(0)) then idPZ:= StrToInt(VarToStr(FieldValues(0))); if idPZ>0 then try Helios.ExecSQL('UPDATE ' + tblPZ + ' SET DokladPrikazu=' + Gdokl + ',TypVyrobnihoDokladu=1,IDPrikaz=' + IntToStr(idVPr) + ' WHERE id=' + IntToStr(idPZ)); Helios.ExecSQL('INSERT ' + tblMzdZmGenPZ + ' (IDMzdy,TypGen,IDPohybu) VALUES (' + IntToStr(IdPMaZ) + ',0,' + IntToStr(idPZ) + ')'); { locSQL:= 'UPDATE ' + tblPrVaz + ' SET '; locSQL:= locSQL + 'Mnoz_skut_realizovane=' + StringReplace(FloatToStr(mnReal),',','.',[rfReplaceAll]); locSQL:= locSQL + ',Mnoz_odv=' + StringReplace(FloatToStr(mnReal),',','.',[rfReplaceAll]); locSQL:= locSQL + ' WHERE id=' + IntToStr(idPrKVaz); Helios.ExecSQL(locSQL); } except on E:Exception do Helios.Error(#1'Nelze uložit položku výdejky.'#1 + CRLF + E.Message + errPlg); end else Helios.Error(#1'Nelze uložit položku výdejky.'#1 + CRLF + locSQL + errPlg); Next; Helios.ExecSQL('UPDATE ' + tblMzdZm + ' SET GenerovanaMatVydejka=1 WHERE id=' + IntToStr(idPMaZ)); end; try // Helios.ExecSQL('EXEC dbo.ep_DoplnKooperacniCenyVydejky @idDZ=' + IntToStr(idDZ)); Helios.ExecSQL('EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=' + IntToStr(idDZ) + ',@AktualizaceSlev=1'); Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=null,IDPrikaz=' + IntToStr(idVPr) + ',CisloZam=' + cZam + ' WHERE id=' + IntToStr(idDZ)); locSQL:= 'DECLARE @chyba BIT,@dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(dt) + ',104)'; locSQL:= locSQL + CRLF + 'EXEC dbo.hp_Realizuj_Vydej ' + IntToStr(idDZ) + ',@dt,' + IntToStr(Helios.UserId) + ',0,@chyba OUT'; locSQL:= locSQL + CRLF + 'SELECT @chyba'; with Helios.OpenSQL(locSQL) do if not VarIsNull(FieldValues(0)) then if LowerCase(VarToStr(FieldValues(0)))='false' then realVyd:= true; except on E:Exception do Helios.Error(#1'Nelze realizovat výdejku.'#1 + CRLF + E.Message + errPlg); end; end; end; idDZ:= 0; locSQL:= 'IF OBJECT_ID(' + QuotedStr('tempdb..#TabOdved_IDMzdy') + ') IS NULL CREATE TABLE #TabOdved_IDMzdy (IDPrikaz int, IDMzdy int)'; Helios.ExecSQL(locSQL); locSQL:= 'INSERT #TabOdved_IDMzdy (IDMzdy,IDPrikaz) VALUES (' + IntToStr(idPMaZ) + ',' + IntToStr(idVPr) + ')'; Helios.ExecSQL(locSQL); locSQL:= 'IF OBJECT_ID(' + QuotedStr('tempdb..#TabGenPrijem') + ') IS NULL CREATE TABLE #TabGenPrijem (ID int)'; Helios.ExecSQL(locSQL); locSQL:= 'DECLARE @dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(dt) + ',104)'; locSQL:= locSQL + CRLF + 'EXEC dbo.hp_OdvedeniPrikazu @RadaDokladu=N' + QuotedStr(radaOdvedDP) + ',@IDObdobi=' + idObd; locSQL:= locSQL + ',@KonecneOdvedeni=0,@DatPorizeni=@dt,@SekejZakazky=0,@SekejPrikazy=0'; try Helios.ExecSQL(locSQL); except on E:Exception do Helios.Error(#1'Příprava odvedení na sklad nebyla úspěšná.'#1 + CRLF + E.Message + errPlg); end; with Helios.OpenSQL('SELECT * FROM #TabGenPrijem') do if RecordCount>0 then idDZ:= StrToInt(VarToStr(FieldValues(0))); if idDZ>0 then begin realPrij:= false; Helios.ExecSQL('UPDATE ' + tblMzdZm + ' SET GenerovanoOdvadeni=1 WHERE id=' + IntToStr(idPMaZ)); { // prirad polozky prijmu k udaji PrikazMzdyAZmetky with Helios.OpenSQL('SELECT id FROM ' + tblPZ + ' WHERE idDoklad=' + IntToStr(idDZ)) do if RecordCount>0 then begin First; while not(EOF) do begin idPZ:= StrToInt(VarToStr(FieldValues(0))); Helios.ExecSQL('INSERT INTO ' + tblMzdZmGenPZ + ' (IDMzdy,TypGen,IDPohybu) VALUES (' + IntToStr(IdPMaZ) + ',2,' + IntToStr(idPZ) + ')'); Next; end; end; } try // Helios.ExecSQL('EXEC dbo.ep_DoplnKooperacniCenyPrijemka @idDZ=' + IntToStr(idDZ)); Helios.ExecSQL('EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=' + IntToStr(idDZ) + ',@AktualizaceSlev=0'); except on E:Exception do Helios.Error(#1'Nelze přepočítat ceny na příjemce z Nadvýroby.'#1 + CRLF + E.Message + errPlg); end; Helios.ExecSQL('UPDATE ' + tblDZ + ' SET CisloZam=' + cZam + ',BlokovaniEditoru=null WHERE id=' + IntToStr(idDZ)); if realVyd then begin try locSQL:= 'DECLARE @c BIT,@dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(DateTimeToStr(dtPicker.DateTime)) + ',104)' + CRLF; locSQL:= locSQL + 'EXEC dbo.hp_Realizuj_Prijem ' + IntToStr(idDZ) + ',@dt,' + IntToStr(Helios.UserId) + ',@c OUT' + CRLF + 'SELECT @c'; with Helios.OpenSQL(locSQL) do if not VarIsNull(FieldValues(0)) then if StrToBool(VarToStr(FieldValues(0)))=true then realPrij:= true; except on E:Exception do Helios.Error(#1'Nelze realizovat příjemku z Nadvýroby.'#1 + CRLF + E.Message + errPlg); end; end; if realPrij then // je realizovana Prijemka? Ano, uprav kusy na prikazu a evidenci kooperace begin try locSQL:= 'EXEC dbo.hp_ZmenaStavuMezdAZmetku ' + IntToStr(idPMaZ) + ',1'; try Helios.ExecSQL(locSQL); except on E:Exception do Helios.Error(#1'Nelze změnit stav Evidence kooperace.'#1 + CRLF + E.Message + errPlg); end; locSQL:= 'UPDATE ' + tblPKObj + ' SET KusyPrevedene=KusyPrevedene+' + StringReplace(mnTxt,',','.',[rfReplaceAll]) + ' WHERE id=' + IntToStr(idPKObj); locSQL:= locSQL + CRLF + 'UPDATE ' + tblPrikaz + ' SET kusy_zive=kusy_zive-' + StringReplace(mnTxt,',','.',[rfReplaceAll]) + ' WHERE id=' + IntToStr(idVPr); locSQL:= locSQL + CRLF + 'UPDATE ' + tblPrikaz + ' SET kusy_odved=kusy_odved+' + StringReplace(mnTxt,',','.',[rfReplaceAll]) + ' WHERE id=' + IntToStr(idVPr); Helios.ExecSQL(locSQL); locSQL:= 'SELECT pko.id FROM ' + tblPKObj + ' pko INNER JOIN ' + tblKObj + ' ko ON (pko.IdObjednavky=ko.id) WHERE ko.id=' + IntToStr(idKO); locSQL:= locSQL + ' AND pko.KusyVKoop>0'; with Helios.OpenSQL(locSQL) do if RecordCount=0 then Helios.ExecSQL('UPDATE ' + tblKObj + ' SET PolSplneny=1 WHERE id=' + IntToStr(idKO)); except on E:Exception do Helios.Error(#1'Nelze přepočítat kusy na příkaz nadvýroby.'#1 + CRLF + E.Message + errPlg); end; end; end; Helios.Refresh(true); Close; Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr('tempdb..#TabPrKVazbyGen') + ') IS NOT NULL DROP TABLE #TabPrKVazbyGen'); Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr('tempdb..#TabOdved') + ') IS NOT NULL DROP TABLE #TabOdved'); Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr('tempdb..#TabGenPrijem') + ') IS NOT NULL DROP TABLE #TabGenPrijem'); Helios.ExecSQL('IF OBJECT_ID(' + QuotedStr('tempdb..#TabGenRezVyd') + ') IS NOT NULL DROP TABLE #TabGenRezVyd'); end; end; procedure TformPrijemkaNadvyroba.edtMnozKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key=VK_RETURN then btnOKClick(Sender); end; procedure TformPrijemkaNadvyroba.FormActivate(Sender: TObject); begin edtMnoz.SetFocus; end; procedure TformPrijemkaNadvyroba.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:= caFree; end; procedure TformPrijemkaNadvyroba.NastavFonty; var idx: integer; begin idx:= 0; while idx0 then NactiPolozkuKoopObj; end; end.