Sevk İrsaliyesi Tasarımı

Merhaba

Ax üzerinde sevk irsaliyesi ve fatura tasarımı gibi işler çetrefilli işlerdir.  Axaptada tasarımsal işlemler genelde zordur.

Ancak belli bazı noktaları bilip mudahalelerinizi yaparsanız kolay bir şekilde istediğiniz güncellemeyi yapmış olursunuz.

Biz bu makalemizde Ax uzerinde matbu bir sevk irsaliyesi tasarımının nasıl yapılabileceğinden bahsedeceğiz.

Öncelikle Ax’ta standart Sevk İrsaliyesi  “SalesPackingSlip”  raporudur. Denemek için  “CustPackingSlipJournal” formundan “Önizleme/Yazdır “  butonunda çıkan Kopya ve Orjinal butonundan  Sevk İrsaliyesi bastırabilirsiniz.

Asıl olan “SalesPackingSlip” raporunda değişiklik yapmayalım. Çogaltip  “ETGSalesPackingSlip” ismini verelim. Ve MenuItem  oluşturalım. Oluşturdğumuz item için multiselect özelliğini yes yapalım.

“ETGSalesPackingSlip” raporunda dizaynında “Generated Design” kısmında irsaliyemizin tasarımını görebilirsiniz.

Burada istenilen değişikler yapılabilir. İstenmeyen alanlar çıkartılıp yeni alanlar eklenebilir. Ancak bizim yapacağımız matbu tasarım standarttan çok farklı olduğu için ben “Generated Design” ‘da bulunan bütün alanaları siliyorum. Bu işlemden sonra raporu derleyip hata veren kısımları yorum satırı haline getiriyorum. Kendim 4 tane ProgramableSection açıyorum. Bunlar:

1.  Sct1 : Başlık bilgilerinin olacağı kısım.

2. Sct2 : İrsaliye satırlarının olacağı kısım.

3. Sperater : Satırlarda eksik kalan kısımları tamamlamak için kullacağım boş bir satır.

4. Sct3 : Toplam ve alt bilgilerin görüneceği kısım. 

Sct1 için örnek olarak iki tane display metod yazayım diğerlerini siz ihtiyacınıza göre ekleyebilirsiniz.

display name dispDeliveryName()
{
      return CustPackingSlipJour.DeliveryName;

}

display PackingSlipId dispPackingSlipId()
{
       return CustPackingSlipJour.PackingSlipId;
} 

Sct2 için de iki tane display örneği verelim

ItemId için standarta olan metodu kullanabilirsiniz.

display Name dispItemName()
{
    return CustPackingSlipTrans.Name;
}
display Qty dispQty()
{
    return CustPackingSlipTrans.Qty;
} 

Sparater için şöyle bir display yazalım


display STR 1 dispstr()
{
    return "";

}

Bu display surukleyim Spareter kısmımıza bıraktığımızda boş bir satır elde etmiş oluruz. Bunu yapmamızın sebebimiz örenğin irsaliyede 15 satır var ancak irsaliye 20 satir için tasarlanmış sct3′ü footer olarak ayarlayabiliriz. Ancak çoklu sayfa olduğunda bazen sorun çıkartabiliyor. Bu yüzden Kalan 5 satırlık yeri boş bir satırla dolduruyoruz.

Son olarak Sct3 için de bir display örenği verelim:


display CustDlvModeId dispDlvMode()
{

   return CustPackingSlipJour.DlvMode;
}

Bu sayede yeni alanlarımız hazır oldu. Bu alanların irsaliyede nerede görünmesini istiyorsanız bunu   “Generated Design” sağ tıklayıp “Düzenle ” deyip yapabilirsiniz. Şimdi Bunları Fatch Metodumuz içinde nasıl yönetebiliriz ona bakalım. Bütün fatch metodunun tamamını buraya almadım sadece  while (tradeLoopTrans.next()) ile başlayan kısımdan itibaren değişiklik yaptığım yeri burada anlatacağım.

            j= 1; // sayaç
            Page = 1; // satırlar tek sayfaya sığmazsa kaç sayfa olduğunu göstermek için sayaç          

           sct1.executeSection();  // birinci kısmımızı basıyoruz.
            while (tradeLoopTrans.next())
            {
                custPackingSlipTrans = tradeLoopTrans.get(tablenum(CustPackingSlipTrans));
                this.send(custPackingSlipTrans);
               sct2.executeSection(); // döngüde ikinci kısmımızı basıyoruz
                j +=1; // sayacımızı arttırıyoruz

                if(j == 30) // eğer sayaç 30 olmuşsa yeni sayfadan devam etmesi için. Siz tasarımınıza göre bu sayıyı değiştirirsiniz.
                {
                    element.newPage(); // yeni sayfa açıyoruz
                    Page += 1; // sayfa sayacını bir arttırıyoruz
                    sct1.executeSection(); // başlık bilgilerini tekrar yazıyoruz
                    j = 1; // sayacı tekrar eski haline getiriyoruz ki eğer varsa 3. 4. vs. sayfaları da basabilsin�
                }

                if ((custFormletterDocument.DocuOnPackingSlip == DocuOnFormular::Line) ||
                    (custFormletterDocument.DocuOnPackingSlip == DocuOnFormular::All))
                    Docu::send(this, DocuRefSearch::newTypeIdAndRestriction(custPackingSlipTrans,
                                                                            custFormletterDocument.DocuTypePackingSlip,
                                                                            DocuRestriction::External));
            }

            for(i=j;i<35;i++) // Göngüden çıktıktan sonra son sayfada kaç satır eksik

            // ona göre bir döngü oluşturup boş satırlarımızı basıyoruz
            {
                Sparater.executeSection();
            }
            sct3.executeSection(); // son olarak alt bilgileri basıyoruz

 Bu işlemlerden sonra istediğimiz irsaliye tasarımını yapmış olduk. Umarım işinize yarar.

Selamlar.

 
  1. Merhaba, anlayana çok faydalı bir paylaşım olmuş. Bizde ilk başladığımız zamanlarda çok sıkıntı yaşamıştık. Ama artık halloldu.

    • Yıldız Aydınalp
    • Ocak 27th, 2011 2:56pm

    Merhaba Fatih Bey,

    Çok güzel bir çalışma olmuş.Ellerinize sağlık.

    Kolay gelsin.

  1. No trackbacks yet.