dizayn.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. # -*- coding: utf-8 -*-
  2. import math
  3. class kalemyapi():
  4. kdv=""
  5. ad=""
  6. miktar=""
  7. birim=""
  8. brfiyat=""
  9. tutar=""
  10. class faturayapi():
  11. hedef=""
  12. adres=""
  13. vdaire=""
  14. vergino=""
  15. tarih=""
  16. tarih2=""
  17. saat=""
  18. kalemler=[]
  19. tutaryaziyla=""
  20. kdvsiztutar=""
  21. kdv1=""
  22. kdv8=""
  23. kdv18=""
  24. gtoplam=""
  25. merkezsicilno=""
  26. subesicilno=""
  27. mersisno=""
  28. kaynakwebadresi=""
  29. sayfayaz=[]
  30. class dizaynyapi():
  31. def sayfala(self,fatura="", kalemadedi=0):
  32. if not fatura :
  33. return "Fatura Nesnesi Bos Geldiginden Sayfalara Bolunemedi"
  34. #if (len(fatura.kalemler)>kalemadedi) : #kalem sayýsý faturanýn max kalem adedinden fazlaysa 1den fazla sayfa olacak
  35. sayfalar = []
  36. # ilk sayfa #########################################
  37. # ilk sayfa icin max kalem adedinden bir eksik yazilacak, son satira ise devir yazilacak
  38. # sonraki sayfalarda devir hem sayfa baþýna hem de sayfa sonuna yazýlacaðý için ilk sayfa ayrý deðerlendiriliyor
  39. sayfa = []
  40. sayfadevir = 0.0
  41. for i in range(kalemadedi-1) :
  42. if(len(fatura.kalemler)==i):
  43. break
  44. sayfa.append( fatura.kalemler[i] )
  45. sayfadevir = sayfadevir + float(fatura.kalemler[i].tutar)
  46. # ilk sayfanýn sonuna devir toplamý ekle
  47. # devir eklenirken kalem nesnesi oluþturuluyor çünkü html de yazdýrýrken kolay olsun!
  48. # faturada "DEVÝR" kelimesini yazdýrmak için, kalemin "ad" kýsmýna bu kelimeyi ekliyoruz.
  49. # NOT: herhangi bir kýsma da eklenebilirdi. mesela brfiyat
  50. kalem=kalemyapi()
  51. kalem.kdv=""
  52. kalem.ad=""
  53. kalem.miktar=""
  54. kalem.birim=""
  55. kalem.brfiyat="DEVIR"
  56. kalem.tutar= "{:.2f}".format( sayfadevir )
  57. # ilk sayfa sonuna devir eden kalemi ekliyoruz
  58. sayfa.append( kalem )
  59. # oluþan ilk sayfa faturanýn sayfalar nesnesine eklenicek
  60. sayfalar.append(sayfa)
  61. #for kalem in sayfa:
  62. #print "--",kalem.brfiyat,kalem.tutar
  63. # kalan kalemleri sayfalara paylaþtýracaz
  64. kalan_kalem = len(fatura.kalemler) - (kalemadedi-1) # ilk sayfaya yazilan kalemlerin sayýsýný toplamdan cikart
  65. sayfa_basi_kalem = kalemadedi - 2 # sonraki sayfalarda ilk satýr önceki devire ait, son satir sonraki sayfaya devire ait.
  66. sayfa_sayisi = float(kalan_kalem) / float(sayfa_basi_kalem) # ilk sayfa hariç kaç sayfa daha yazdýracaðýmýzý buluyoruz.
  67. sayfa_sayisi = math.ceil(sayfa_sayisi) # bölüm sonucunu yukarý yuvarlýyoruz çünkü bir kalem dahi kalsa, yeni bir sayfa gerekecek
  68. sayfa_sayisi = int(sayfa_sayisi)
  69. for sayfaindex in range(sayfa_sayisi) :
  70. sayfa = []
  71. # ilk sayfa haricindeki sayfalarýn baþýna da devir toplamý ekle
  72. # NOT: sayfanýn üstünde kalan kalemlerin toplamýndan gelen devir
  73. # devir eklenirken kalem nesnesi oluþturuluyor çünkü html de yazdýrýrken kolay olsun!
  74. # faturada "DEVÝR" kelimesini yazdýrmak için, kalemin "ad" kýsmýna bu kelimeyi ekliyoruz.
  75. # NOT: herhangi bir kýsma da eklenebilirdi. mesela brfiyat
  76. kalem=kalemyapi()
  77. kalem.kdv=""
  78. kalem.ad=""
  79. kalem.miktar=""
  80. kalem.birim=""
  81. kalem.brfiyat="DEVIR"
  82. kalem.tutar="{:.2f}".format( sayfadevir )
  83. sayfa.append( kalem )
  84. # Sayfalardaki devir toplamlarýný hesaplamak için kullanýlýyor.
  85. for kalemindex in range(sayfa_basi_kalem) :
  86. index = sayfa_basi_kalem * sayfaindex + kalemadedi-1 + kalemindex
  87. if(index<len(fatura.kalemler)) :
  88. sayfa.append( fatura.kalemler[index] )
  89. sayfadevir += float(fatura.kalemler[index].tutar)
  90. # ilk sayfa haricindeki sayfaların sonuna da devir toplamý ekle
  91. # NOT: sayfanýn üstünde kalan kalemlerin toplamýndan gelen devir
  92. # devir eklenirken kalem nesnesi oluşturuluyor çünkü html de yazdýrýrken kolay olsun!
  93. # faturada "DEVÝR" kelimesini yazdýrmak için, kalemin "ad" kýsmýna bu kelimeyi ekliyoruz.
  94. # NOT: herhangi bir kýsma da eklenebilirdi. mesela brfiyat
  95. kalem=kalemyapi()
  96. kalem.kdv=""
  97. kalem.ad=""
  98. kalem.miktar=""
  99. kalem.birim=""
  100. kalem.brfiyat="DEVIR"
  101. kalem.tutar="{:.2f}".format( sayfadevir )
  102. sayfa.append( kalem )
  103. sayfalar.append(sayfa)
  104. '''for sayfa in sayfalar:
  105. for kalem in sayfa:
  106. print kalem.brfiyat,kalem.tutar
  107. '''
  108. return sayfalar