503 lines
26 KiB
ObjectPascal
503 lines
26 KiB
ObjectPascal
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.
|