Files
LOVATO-plugin/frmUnit8.pas
2026-04-07 18:23:56 +02:00

503 lines
26 KiB
ObjectPascal
Raw Permalink Blame History

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<><70>kaze nejsou u<> <20><>dn<64> <20>iv<69> kusy, nelze d<>lat dal<61><6C> p<><70>jemku.'#1 + CRLF + 'Pokud i p<>esto chcete';
locSQL:= locSQL + ' zaevidovat p<><70>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<6B>d<EFBFBD>n<EFBFBD> z<>znamu evidence Nadv<64>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<6C>it hlavi<76>ku V<>dejky materi<72>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<6C>it polo<6C>ku v<>dejky.'#1 + CRLF + E.Message + errPlg);
end
else
Helios.Error(#1'Nelze ulo<6C>it polo<6C>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<><50>prava odveden<65> na sklad nebyla <20>sp<73><70>n<EFBFBD>.'#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<70><6F>tat ceny na p<><70>jemce z Nadv<64>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<><70>jemku z Nadv<64>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<7A>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<70><6F>tat kusy na p<><70>kaz nadv<64>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 idx<Self.ComponentCount-1 do
begin
if (Self.Components[idx] is TLabel) then
begin
(Self.Components[idx] as TLabel).Font.Name:= Helios.Font;
(Self.Components[idx] as TLabel).Font.Height:= Helios.FontHeight;
end;
if (Self.Components[idx] is TButton) then
begin
(Self.Components[idx] as TButton).Font.Name:= Helios.Font;
(Self.Components[idx] as TButton).Font.Height:= Helios.FontHeight;
end;
if (Self.Components[idx] is TGroupBox) then
begin
(Self.Components[idx] as TGroupBox).Font.Name:= Helios.Font;
(Self.Components[idx] as TGroupBox).Font.Height:= Helios.FontHeight;
end;
Inc(idx);
end;
end;
procedure TformPrijemkaNadvyroba.FormShow(Sender: TObject);
begin
Self.Icon.Handle:= Helios.MainApplicationIconHandle;
Self.Font.Name:= Helios.Font;
try
NactiParametryHeliosu(Helios, helParams);
except on E:Exception do
Helios.Error(#1'Nelze na<6E><61>st parametry Heliosu pro u<>ivatele.'#1 + CRLF + E.Message + errPlg);
end;
NastavFonty;
with Helios.OpenSQL('SELECT id FROM ' + tblCOrg + ' WHERE CisloOrg=2') do
idCOrgDP:= StrToInt(VarToStr(FieldValues(0)));
idVPr:= 0;
lblPrikaz.Caption:= '';
with Helios.OpenSQL('SELECT pko.idPrikaz,p.RadaPrikaz FROM ' + tblPKObj + ' pko INNER JOIN ' + tblPrikaz + ' p ON (pko.IdPrikaz=p.id) WHERE pko.id=' + IntToStr(idPKObj)) do
if RecordCount>0 then
begin
idVPr:= StrToInt(VarToStr(FieldValues(0)));
lblPrikaz.Caption:= '(p<><70>kaz ' + VarToStr(FieldValues(1)) + ')';
end;
dtPicker.Date:= Now;
if idPKObj>0 then
NactiPolozkuKoopObj;
end;
end.