Seri Kodundan Stok Kodu ve Seri Kaydı Desteği Seri kodunu barkod gibi görüp bir faturada kalem sayısı fazla olan işletmelerde satış Faturası, satış İrsaliyesi gibi ürün yönü çıkış olan belgelerde LPS uygulaması açıkken, sistemde olan bir serinin belgede girilip hem stok kartının bulunması hem de LPS hareketinin oluşması istenebilir. Öncelikle bu işlemin olması için; 1-) Belge Seçeneklerinden LPS işleminin açık ve tipinin Belge Kayıt(1) olması, 2-) Belge Seçeneklerinden Kalemde Hızlı Giriş Desteğinin açık olması, 3-) Belge Seçeneklerinden Miktar için ön değer parametresinin “1” olması Ayrıca her serinin ayrı ayrı kalem olmaması için; 4-) Belge Seçeneklerinden “Tekrar Eden Stok Engellensin” ve “Tekrar Eden Stok Listeden Bulunsun” parametrelerinin açık olması, 5-) Eğer stoklarda fiyat yok ve fiyatların sonradan girilmesi isteniyorsa “Tutarsız Kayıt Girişine İzin Ver” parametresinin gerekmektedir. 6-) Ayrıca Elle Seri yazılıyorsa hızlı giriş açık olmasından dolayı “Tab” Değil “Enter” tuşuna basılması gerekmektedir. İşlem Adımları ; 1-) Aşağıdaki fonksiyonu sisteme ekleyiniz. CREATE FUNCTION dbo.ZZ_PrgFn_GetStokKoduWithSeriNo(@SERI_NO VARCHAR(100)) RETURNS TABLE AS RETURN ( /* ***** Bakiye Kontrolü Olmadan Seri Desteği ***** */ --SELECT STOK_KODU FROM TBLSTOKLPSHR HR (NOLOCK) --INNER JOIN TBLSTOKSB SB (NOLOCK) ON SB.REC_NO=HR.STOK_KODU_RECID WHERE ISNULL(SERI_NO,'')=@SERI_NO /* ***** Bakiye Kontrolü ile Seri Desteği ***** */ SELECT STOK_KODU FROM PRG_VIEW_LPSSTOKHR WITH(NOLOCK) WHERE ISNULL(SERI_NO,'')=@SERI_NO GROUP BY STOK_KODU,SERI_NO HAVING SUM(GCMIK*GC_ISLEM)>0 ) 2-) Aktif Kodlamaları ilgili alanlara yazınız. STOK_KODU.OnAfterChange
if STOK_KODU.Text <> '' then if AppInfo.AppGlobalInteger = 0 then begin AppInfo.AppGlobalString := STOK_KODU.Text; end; STOK_KODU.OnBeforeExit(Seri Numarasının Kontrolü
Yapılıyor)
AppQuery.Close; AppQuery.SQL.Text:='SELECT * FROM TBLSTOKSB WHERE STOK_KODU='+QuotedStr(AppInfo.AppGlobalString); AppQuery.Open; If AppQuery.Found Then Begin AppInfo.AppGlobalString := ''; AppInfo.AppGlobalInteger := 0; End Else Begin AppQuery.SQL.Text:='SELECT * FROM DBO.ZZ_PrgFn_GetStokKoduWithSeriNo('+quotedstr(AppInfo.AppGlobalString)+')'; AppQuery.Open; If AppQuery.RecordCount > 1 Then Begin ShowMessage('Seri Kodu Birden Fazla Stok İle Eşleşti! Kayıtları Kontrol Ediniz.'); Exit; End; If AppQuery.Found Then Begin AppInfo.AppGlobalInteger := 1; //Seri Bulundu İse STOK_KODU.Text := AppQuery.Fields[0].AsString; STOK_KODU.SetFocus; STOK_ADI.SetFocus; End Else Begin End; End; AppQuery.Close; Public.OnLoad AppInfo.AppGlobalInteger := 0; //Seri Bulundu Flagı 0
ise bulunmadı 0 ise bulundu. BtnStokKayit.OnAfterPost(Seri Kaydının Yapıldığı Kodlama)
var xSTOK_KODU: String; Qry:TBtQuery; function GetStokRecID(STOK_KODU:String):Integer; begin
AppQuery.Close;
AppQuery.SQL.Text:='SELECT REC_NO FROM TBLSTOKSB WHERE
STOK_KODU=' + QUOTEDSTR(STOK_KODU); AppQuery.Open; Result := AppQuery.FieldByName('REC_NO').AsInteger; AppQuery.Close;
end;
function GetBelgeListNo(KALEM_RECNO:Integer):Integer; begin
AppQuery.Close;
AppQuery.SQL.Text:='SELECT BELGE_LIST_NO FROM TBLSTOKHR
WHERE REC_NO=' + QUOTEDSTR(KALEM_RECNO); AppQuery.Open;
Result := AppQuery.FieldByName('BELGE_LIST_NO').AsInteger; AppQuery.Close;
end; begin AppQuery.Close; AppQuery.SQL.Text:='SELECT * FROM
DBO.ZZ_PrgFn_GetStokKoduWithSeriNo('+quotedstr(AppInfo.AppGlobalString)+')'; AppQuery.Open;
if AppQuery.Found
then
begin xSTOK_KODU := AppQuery.Fields[0].AsString; end
else
begin xSTOK_KODU := AppInfo.AppGlobalString; end;
AppQuery.Close; if AppInfo.AppGlobalInteger = 1 then begin
Qry := TBtQuery.Create(nil);
Qry.Close;
Qry.RequestLive := True; Qry.SQL.Text:='SELECT * FROM TBLSTOKLPSHR
WHERE 1=1'; Qry.SQL.Add('AND SERI_NO=' + QuotedStr(AppInfo.AppGlobalString)); Qry.SQL.Add('AND
BELGE_TIPI=1');
Qry.SQL.Add('AND ILK_REC_NO=' +
IntToStr(BtnStokKayit.BtTag)); Qry.Open;
if Qry.Found then Qry.Edit else
Qry.Insert;
Qry.FieldByName('STOK_KODU_RECID').AsInteger
:= GetStokRecID(xSTOK_KODU); Qry.FieldByName('SERI_NO').AsString
:= AppInfo.AppGlobalString; Qry.FieldByName('LOT_NO').AsString :=
'';
Qry.FieldByName('PARTI_NO').AsString
:= ''; Qry.FieldByName('GCMIK').AsFloat :=
1;
Qry.FieldByName('BELGE_NO').AsString
:= BELGE_NO.Text; Qry.FieldByName('BELGE_TIPI').AsInteger
:= 1; Qry.FieldByName('ILK_REC_NO').AsInteger
:=
BtnStokKayit.BtTag;
Qry.FieldByName('BELGE_LIST_NO').AsInteger
:= GetBelgeListNo(BtnStokKayit.BtTag); Qry.Post; Qry.Close; end; AppInfo.AppGlobalInteger := 0; AppInfo.AppGlobalString := '';
end; Menu.PopupMenu:5_OnClick(Fazla okutulan serilerin
kalemden miktarı azaltıldıktan sonra silinmesi için)
var xSeriNo : String; Qry : TBtQuery; begin xSeriNo := ''; if InputQuery('Seri Silme',
'Silinecek Seri No Giriniz : ', xSeriNo) then begin
Qry :=
TBtQuery.Create(nil);
Qry.Close;
Qry.RequestLive
:= True; Qry.SQL.Text
:= 'SELECT * FROM TBLSTOKLPSHR WHERE BELGE_NO=' + BELGE_NO.SQLText; Qry.SQL.Add('AND
SERI_NO=' +
QuotedStr(xSeriNo));
Qry.Open;
if Qry.Found
then begin
Qry.Delete; AppInfo.AppMes('Seri
Silindi!'); end else begin
AppInfo.AppMes('Seri Bulunamadı!');
Exit;
end;
Qry.Close;
end;
end;
|