Transfer İşlemleri iki ambar arasında olabileceği gibi depo içerisinde de olabilir, buradaki fark ambarlar arası transfer işleminde oluşan fiş ERP'ye entegre edilir depo içerisinde oluşan Yer Değiştirme fişi ise ERP'ye entegre edilmez. Bu iki fiş arasındaki fark Hedef Ambar bilgisidir, Yer Değiştirme fişinde kaynak ve hedef ambar bilgisi aynı olurken Ambarlar arası transfer fişinde ise farklı seçilir.

BackOffice Transfer İşlemleri

Diğer fişlerde olduğu gibi transfer fişinde de önce emir sonra stok fişi oluşturulur. Eğer transfer fişi bir talebe istinaden gerçekleşecek ise o zaman ERP'deki talep fişi WMS Platform->Transfer->Siparişler menüsü altına aktarılır. Buradaki talep fişi önce emire sonra emri stok fişine dönüştürülerek talebe istinaden ambar transfer malzeme fişi ERP'ye geri aktarılır.
Transfer fişi diğer fişlerden farklı olarak Hedef bilgiler de seçilmelidir;

  • Hedef Ambar
  • Hedef Adres
  • Hedef Taşıma Kabı (zorunlu değil)

Eğer işlem yer değiştirme ise o zaman kaynak ve hedef ambar aynı seçilir,

Eğer yer değiştirme işlemi sadece malzemeyi bir lokasyondan başka bir lokasyona taşımak ise o zaman malzeme seçilir, miktar girilir ve kaynak adres ile hedef adres girilir. Aşağıdaki örnekte göreceğiniz gibi buradaki tek fark kaynak ile hedef adreslerin farklı olmasıdır.

Eğer bu işlem bir ambar transfer fişi olsaydı o zaman fiş türü değiştirilip hedef ambar ve hedef adres bilgileri değiştirilerek işlem gerçekleşirdi.

Transfer işleminde taşıma kabı kullanımı tam taşıma kabı ile taşıma kabı içerisinden belli bir miktarı transfer olarak gerçekleşebilir. Tam taşıma kabı transfer işleminde satırda sadece kaynak ve hedefte aynı taşıma kabı seçilmesi yeterlidir.

Burada malzeme seçimine gerek yoktur.

Eğer malzeme seçimi yapılıp hedef taşıma kabı bilgisi boş bırakılırsa o zaman sadece miktar kadar stok hareket etmiş olacak ama taşıma kabı kaynak adreste kalacaktır.

Eğer bir adresteki malzemeler yeni bir taşıma kabına trasnfer edilmek istenirse o zaman kaynak taşıma kabı boş bırakılp hedef taşıma kabı alanı doldurulur ve malzeme seçilerek miktar girişi yapılır.

Taşıma kaplı transfer işlemlerinde hangi alanları dolu olması gerektiğini gösteren tablo aşağıdaki gibidir.

Terminal Transfer İşlemleri

Terminal ile transfer süreci aşağıdaki işlem adımları ile gerçekleşir;

1-Fiş türü seçilir

2-Kaynak ve hedef bilgiler seçilir.

3-Satır bilgileri sorulur

Eğer işlem paletli ise yukarıda olduğu gibi 2 seçenek sorulur. Eğer malzeme barkodu girildiyse doğrudan miktar sorulur.

Terminal Script Transfer Uyarlma Kodları

Transfer işlemi için örnek script kodu satır aralarında yorumlar ile aşağıdaki gibidir.

BeginForm(TransferBaslik)

 

BeginForm(TransferBaslik)

    KeyFunction("ESC",GoForm(AnaMenu))

    ClearScreen()

    Text(0,0,"Transfer İşlemleri")

    ResetVariables({"name":["@HedefSira","@KaynakSira","@@Address","@@Address2","@fisTurSecim","@@Warehouse","@@Warehouse2","@@Slip","@@WorkOrder","@@WorkOrderLine","@@SlipLine"]})

    ShowMessage({"title":"Seçim","message":"Transfer İşlem Türü","buttons":"Ambar Transfer|Yer Değiştirme"},@fisTurSecim)

    DepoSecimi:

        ////Fiş türü seçim işlemleri

        If(@fisTurSecim=1)

            //Ambart Transfer Fiş Türü Seçimi

            CustomSlipType.Get(25)

            Warehouse.List("","Code",@KaynakDepoListe)

            PopupView(@KaynakDepoListe.rows,{"mode":"list","title":"Kaynak Depo Seçimi","fields":["Code|Depo Kodu|15|L","Name|Depo Adı|15|L"]},@KaynakSira)

            Warehouse.Get(@[email protected])

            If(@@Warehouse.Id="")

                ShowMessage({"title":"UYARI","message":"Depo Seçilemedi","buttons":"TAMAM"},@Mesaj)

                Goto(DepoSecimi)

            EndIf()

            Warehouse.List("Id!=@@Warehouse.Id","Code",@HedefDepoListe)

            PopupView(@HedefDepoListe.rows,{"mode":"list","title":"Kaynak Depo Seçimi","fields":["Code|Depo Kodu|15|L","Name|Depo Adı|15|L"]},@HedefSira)

            Warehouse.Get(@[email protected],@@Warehouse2)

            If(@@Warehouse2.Id="")

                ShowMessage({"title":"UYARI","message":"Hedef Depo Seçilemedi","buttons":"TAMAM"},@Mesaj)

                Goto(DepoSecimi)

            EndIf()

        Else()

            //Yer Değiştir Fiş Türü Seçimi

            Warehouse.Get(@@LoginUser.DefaultWarehouseId)

            Warehouse.Get(@@Warehouse.Id,@@Warehouse2)

            CustomSlipType.Get(1)

           

        EndIf()

   

    ///Aynı güne, aynı fiş türünden, aynı kullanıcıya ait, açık Emir Fişi yoksa yenisi açılır   

    WorkOrder.Get("SlipType=3 AND (StateId<>14 OR StateId <>15) AND CustomSlipTypeId=@@CustomSlipType.Id AND Warehouse2Id=@@Warehouse2.Id AND WarehouseId=@@Warehouse.Id AND CreatedBy=@@LoginUser.Id AND CONVERT(date, CreatedDate)=CONVERT(date, getdate())")

    If(@@WorkOrder.Id="")

        WorkOrder.New({"SlipType":"3"},1) 

    EndIf()

   

    ///Emire ait Beklemede ve İşleme Alındı fiş varsa seçilir yoksa yeni fiş açılır

    Slip.Get("WorkOrderId=@@WorkOrder.Id AND (StateId=16 OR StateId=17)")

    If(@@Slip.Id="")

        Slip.New({"SlipType":"3"},1)

    EndIf()

   

    KaynakAdresSecimi:

        ClearScreen()

        Text(0,0,"@@CustomSlipType.Name İşlemleri")

        ResetVariables({"name":["@@Address","@@Address2","@AdresListesi","@HedefAdresListesi"]})

        ////Kaynak Adres Seçimi

        /// Adres Seçimi, tek adres ise otomatik seçer birden çok adres ise liste çıkartır

        Address.List("WarehouseId=@@Warehouse.Id","",@AdresListesi)

        If(@AdresListesi.rowCount<1)

            ShowMessage({"title":"UYARI","message":" Adres Bulunamadı","buttons":"TAMAM"},@Mesaj)

            Goto(KaynakAdresSecimi)

        EndIf()

       

        If(@AdresListesi.rowCount=1)

            Address.Get(@AdresListesi.rows.1.Id)

        Else()

            PopupView(@AdresListesi.rows,{"mode":"list","title":"@@Warehouse.Code-@@Warehouse.Name Kaynak Adres Listesi","fields":["Address|Adres Tanımı|15|L"]},@Sira)

            Address.Get(@[email protected])

        EndIf()

       

        ////Hedef Adres Seçimi

        /// Adres Seçimi, tek adres ise otomatik seçer birden çok adres ise liste çıkartır

        Address.List("WarehouseId=@@Warehouse2.Id AND Id!=@@Address.Id","",@HedefAdresListesi)

        If(@HedefAdresListesi.rowCount<1)

            ShowMessage({"title":"UYARI","message":" Adres Bulunamadı","buttons":"TAMAM"},@Mesaj)

            Goto(KaynakAdresSecimi)

        EndIf()

       

        If(@HedefAdresListesi.rowCount=1)

            Address.Get(@HedefAdresListesi.rows.1.Id,@@Address2)

        Else()

            PopupView(@HedefAdresListesi.rows,{"mode":"list","title":"@@Warehouse2.Code-@@Warehouse2.Name Hedef Adres","fields":["Address|Adres Tanımı|15|L"]},@Sira)

            Address.Get(@Hedef[email protected],@@Address2)

        EndIf()

       

        ///Palet veya ürün okutulur

    PaletVeyaUrun:

        ResetVariables({"name":["@@ContainerType","@@Container2","@@Container"]})

        Text(1,1,"@@Warehouse.Code-@@Warehouse.Name -> @@Warehouse2.Code-@@Warehouse2.Name",{"title":"Kaynak Ambar | Hedef Ambar","style": {"color":"Red","titleColor":"Blue","size":"2","effect":"Bold"}})

        Text(1,2,"@@Address.Address  ->  @@Address2.Address",{"title":"Kaynak | Hedef Adres","style": {"color":"Red","titleColor":"Blue","size":"2","effect":"Bold"}})

        Input(1,3,"Palet veya Malzeme  [0-ENTER Adres Seçim]:",{"type":"text","min":"1", "max":"105","style": {"titleColor":"Green"}},@Barkod)

        If(@Barkod="0",Goto(KaynakAdresSecimi))

       

        ///Palet Kaynak Adres stokunda varsa işlem türü kontrol edilir Yoksa Malzeme Kontrol Eder

        /// İşlem Türleri

        /// 1 = TamPalet

        /// 2 = Paletin içinden ürün çıkartılıp adrese transfer

        /// 3 = Paletten Yeni Palete veya var olan Palete transfer

       

    PaletKontrol:

        Sql("select * from StockTotalView where LPN=@Barkod AND Address=@@Address.Address and Stok>0",@PaletKaynakAdresStokKontrol)

        If(@PaletKaynakAdresStokKontrol.rowCount>0)

            Container.Get("LPN='@Barkod'")

            ShowMessage({"title":"SORU?","message":"Palet Barkod: @@Container.LPN \n Transfer Türü","buttons":"Tam Palet|Palet İçinden|Paletten Palete"},@TTuru)

            CaseGoto(@TTuru,{"1":"TamPalet","2":"PaletIcinden","3":"PalettenPalete"})

        Else()

            Goto(MalzemeKontrol)

        EndIf()

       

        /// 1 = TamPalet

    TamPalet:

        Container.Get(@@Container.Id,@@Container2)

        ResetVariables({"name":["@@Item"]})

        WorkOrderLine.New({"SlipType":"3","Quantity" : "1"},1)

        SlipLine.New({"SlipType":"3","Quantity" : "1"},1)

       

        If(@Response.Status="-1")

            ShowMessage({"title":"Fiş Kaydetme Hatası", "message" : "@Response.Message ", "buttons" : "Tamam"},@secim)

            Goto(PaletVeyaUrun)

        EndIf()

        Goto(PaletVeyaUrun)

       

        /// 3 = Paletten Yeni Palete veya var olan Palete transfer

    PalettenPalete:

        ClearLines(3,10)

        Input(0,0,"Hedef Palet [0-ENTER Yeni Palet]:",{"type":"text","min":"1", "max":"105","style": {"titleColor":"Green"}},@Palet2Barkod)

        If(@Palet2Barkod="0")

            ResetVariables({"name":["@@ContainerType","@@Container2","@@Container"]})

            ContainerType.List("","",@ContainerTipi)

            PopupView(@ContainerTipi.rows,{"mode":"list","title":"Kabul Palet Türü","fields":["LPNPrefix|Kodu|15|L","Code|Açıklama|15|L"]},@Sira)

            ContainerType.Get(@[email protected])

            If(@@ContainerType="")

                ShowMessage({"title":"UYARI","message":"Taşıma kabı tipi seçilemedi","buttons":"TAMAM"},@Secenek)

                Goto(PalettenPalete)

            EndIf()

            Container.Generate({"Count":"1","Description":"@[email protected]"},@@Container2)

            Print("PaletEtiket",@@LoginUser.PrinterId,1,{"Id":"@@Container2.Id"})

            Set(@Palet2Barkod,@@Container2.LPN)

           

        Else()

            ///Hedef Palet Yeni Değilse Stokta var mı?

            Sql("select * from StockTotalView where LPN=@Palet2Barkod AND Address=@@Address.Address",@HedefPaletStokKontrol)      

            If(@HedefPaletStokKontrol.rowCount<0)

                ShowMessage({"title":"UYARI","message":"Okutulan @Palet2Barkod Palet Barkodu \n Hefed @@Warehouse2.Code-@@Warehouse2.Name Ambarın \n @@Address2.Address Adresinde Yoktur","buttons":"TAMAM"},@Mesaj)

                Goto(PalettenPalete)

            EndIf()

        EndIf()

       

        Container.Get("LPN='@Barkod'")

        Container.Get("LPN='@Palet2Barkod'",@@Container2)

        If(@@Container2="")

            ShowMessage({"title":"UYARI","message":"Taşıma kabı seçilemedi","buttons":"TAMAM"},@Secenek)

            Goto(PalettenPalete)

        EndIf() 

       

        /// 2 = Paletin içinden ürün çıkartılıp adrese transfer

    PaletIcinden:

        If(@PaletKaynakAdresStokKontrol.rowCount=1)

            Set(@Barkod,@PaletKaynakAdresStokKontrol.rows.1.ItemCode)

        Else()

            Input(1,4,"@@Container.LPN içindeki Malzeme @@Container2.LPN [0-ENTER Adres Seçim]:",{"type":"text","min":"1", "max":"105","style": {"titleColor":"Green"}},@Barkod)

        EndIf()

    If(@Barkod="0",Goto(KaynakAdresSecimi))

       

    MalzemeKontrol:

        UnitBarcode.Get("Barcode='@Barkod'")

        If(@@Item.Id="")

            Item.Get("Code='@Barkod'")

            If(@@Item.Id="")

                Item.List("Name like '%'+@Barkod+'%'","",@MalzemeListesi)

                If(@MalzemeListesi.rowCount<1)

                    ShowMessage({"title":"UYARI","message":"Girilen Bilgilere Ait Malzeme Bulunamadı","buttons":"TAMAM"},@Secenek)

                    Goto(PaletVeyaUrun)

                EndIf()

                PopupView(@MalzemeListesi.rows,{"mode":"list","title":"Malzemelr","fields":["Code|Kodu|15|L","Name|Açıklaması|35|L"],"style":@Style.app.popup},@Sira)

                Item.Get(@[email protected])

                /// Secilen Malzemeye Ait Birim Sistesini Getirir

                ItemUnit.List("ItemId=@@Item.Id","",@BirimListe)

                PopupView(@BirimListe.rows,{"mode":"list","title":"Malzemelr","fields":["Code|Kodu|15|L"],"style":@Style.app.popup},@Sira)

                ItemUnit.Get(@[email protected])

            EndIf()

        EndIf()

       

        ///Takip Turu Kontrol

        Text(1,3,"@@Container.LPN -> @@Container2.LPN",{"title":"Kaynak Palet | Hedef PAlet","style": {"color":"Red","titleColor":"Blue","size":"2","effect":"Bold"}})

        Text(1,4,"@@Item.Code | @@Item.Name",{"title":"Malzeme Kodu | Malzeme Açıklaması","style": {"color":"Red","titleColor":"Blue","size":"2","effect":"Bold"}})

        CaseGoto(@@Item.TrackingType,{"0":"TakipsizMiktarSor","1":"LotBilgisiniSor","2":"SeriSatirAc"})

       

    TakipsizMiktarSor:

        ///Takipsiz Stok Kontrol

        If(@@Container!="")

            /// İşlem paletli ise

            Sql("select ISNULL(SUM(Stok),0) kalan from StockTotalView where LPN=@@Container.LPN AND Address=@@Address.Address AND ItemId=@@Item.Id and Stok>0",@KaynakAdresStokKontrol)

        Else()

            ///İşlem paletsiz ise

            Sql("select ISNULL(SUM(Stok),0) kalan from StockTotalView where LPN IS NULL AND ItemId=@@Item.Id AND Address=@@Address.Address and Stok>0",@KaynakAdresStokKontrol)

        EndIf()

       

        Input(1,5,"@@ItemUnit.Code Miktarı [0-ENTER Yeni Ürün]: ",{"type":"decimal","min":"0.05", "max":"99999999.0","style": {"titleColor":"Green"}},@miktar)

        If(@Barkod="0",Goto(PaletVeyaUrun))

        If(@miktar>@KaynakAdresStokKontrol.rows.1.kalan)

            ShowMessage({"title":"Uyarı", "message" : "Malzemeye ait @@Warehouse.Code-@@Warehouse.Name Ambarın @@Address.Address Adresinde Stok Yetersiz \n Stok Miktarı: @KaynakAdresStokKontrol.rows.1.kalan @@ItemUnit.Code", "buttons" : "Tamam"},@secim)

            Goto(TakipsizMiktarSor)

        EndIf()

        WorkOrderLine.New({"SlipType":"3","Quantity" : "@miktar"},1)

        SlipLine.New({"SlipType":"3","Quantity" : "@miktar"},1)

        If(@Response.Status="-1")

            ShowMessage({"title":"Fiş Kaydetme Hatası", "message" : "@Response.Message ", "buttons" : "Tamam"},@secim)

        EndIf()

        Goto(PaletVeyaUrun)

       

    LotBilgisiniSor:

        Input(1,5,"@@Item.Code-@@Item.Name @@ItemUnit.Code Lot No [0-ENTER Yeni Ürün]: ",{"type":"text","min":"1", "max":"105"},@TakipNo)

        If(@Barkod="0",Goto(PaletVeyaUrun))

        /// Lot Stok Kontrol

        If(@@Container!="")

            /// İşlem paletli ilse

            Sql("select ISNULL(SUM(Stok),0) kalan from StockTotalView where TrackingNumber=@TakipNo AND LPN=@@Container.LPN AND Address=@@Address.Address AND ItemId=@@Item.Id and Stok>0",@KaynakAdresStokKontrol)

        Else()

            ///İşlem paletsiz ise

            Sql("select ISNULL(SUM(Stok),0) kalan from StockTotalView where TrackingNumber=@TakipNo AND ItemId=@@Item.Id AND Address=@@Address.Address and Stok>0",@KaynakAdresStokKontrol)

        EndIf()

       

        Input(1,6,"@@ItemUnit.Code Miktarı: ",{"type":"decimal","min":"0.05", "max":"99999999.0","style": {"titleColor":"Green"}},@miktar)

        If(@miktar>@KaynakAdresStokKontrol.rows.1.kalan)

            ShowMessage({"title":"Uyarı", "message" : "Malzemeye ait @@Warehouse.Code-@@Warehouse.Name Ambarın @@Address.Address Adresinde Stok Yetersiz \n Stok Miktarı: @KaynakAdresStokKontrol.rows.1.kalan @@ItemUnit.Code", "buttons" : "Tamam"},@secim)

            Goto(LotBilgisiniSor)

        EndIf()

        WorkOrderLine.New({"SlipType":"3","Quantity" : "@miktar"},0)

        SlipLine.New({"SlipType":"3","Quantity" : "@miktar"},0)

        ItemTracking.New({"LineType":"4","Quantity":"@miktar","TrackingNumber":"@TakipNo"},1)

        ItemTracking.New({"LineType":"5","Quantity":"@miktar","TrackingNumber":"@TakipNo"},1)

        If(@Response.Status="-1")

            ShowMessage({"title":"Fiş Kaydetme Hatası", "message" : "@Response.Message ", "buttons" : "Tamam"},@secim)

        EndIf()

        Goto(PaletVeyaUrun)

       

    SeriSatirAc:

        WorkOrderLine.New({"SlipType":"3","Quantity" : "1"},0)

        SlipLine.New({"SlipType":"3","Quantity" : "1"},0)

    SeriBilgisiAl:

        Input(1,5,"@@Item.Code-@@Item.Name Seri No [0-ENTER Yeni Ürün]: ",{"type":"text","min":"1", "max":"105"},@TakipNo)

        If(@TakipNo=0,Goto(PaletVeyaUrun))

       

        /// Seri Kodlu Stok Kontrol

        If(@@Container!="")

            /// İşlem paletli ilse

            Sql("select ISNULL(SUM(Stok),0) kalan from StockTotalView where TrackingNumber=@TakipNo AND LPN=@@Container.LPN AND Address=@@Address.Address AND ItemId=@@Item.Id and Stok>0",@KaynakAdresStokKontrol)

        Else()

            ///İşlem paletsiz ise

            Sql("select ISNULL(SUM(Stok),0) kalan from StockTotalView where TrackingNumber=@TakipNo AND ItemId=@@Item.Id AND Address=@@Address.Address and Stok>0",@KaynakAdresStokKontrol)

        EndIf()

        If(@KaynakAdresStokKontrol.rows.1.kalan<0)

            ShowMessage({"title":"UYARI","message":"Malzemeye ve @TakipNo Seriye Ait \n @@Warehouse.Code-@@Warehouse.Name Ambarın \n @@Address.Address Adresinde \n Stok Yoktur","buttons":"TAMAM"},@Mesaj)

            Goto(PaletVeyaUrun)

        EndIf()

       

        ItemTracking.New({"LineType":"4","Quantity":"1","TrackingNumber":"@TakipNo"},1)

        ItemTracking.New({"LineType":"5","Quantity":"1","TrackingNumber":"@TakipNo"},1)

        If(@Response.Status="-1")

            ShowMessage({"title":"Fiş Kaydetme Hatası", "message" : "@Response.Message ", "buttons" : "Tamam"},@secim)

        EndIf()

        Goto(SeriBilgisiAl)

       

    GoForm(AnaMenu)

EndForm()