Sayfayı Yazdır | Pencereyi Kapat

Seri Kodundan Stok Kodu ve Seri Kaydı Desteği

Nereden Yazdırıldığı: Atiker Yazılım | Forum
Kategori: Bilgi Bankası
Forum Adı: Aktif Kodlama
Forum Tanımlaması: Aktif Kodlama
URL: http://www.atikeryazilim.com.tr/forum_posts.asp?TID=339
Tarih: 27 Aralık 2024 Saat 11:37
Program Versiyonu: Web Wiz Forums 11.04 - http://www.webwizforums.com


Konu: Seri Kodundan Stok Kodu ve Seri Kaydı Desteği
Mesajı Yazan: mervenur.demic
Konu: Seri Kodundan Stok Kodu ve Seri Kaydı Desteği
Mesaj Tarihi: 26 Ekim 2018 Saat 09:03

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;                                    

 




Sayfayı Yazdır | Pencereyi Kapat