ERP Nedir? | Türkiye'nin ERP Forum Platformu Ana Sayfa
Forum Anasayfa Forum Anasayfa > ERP Temel Paketler > ERP Fatura Modülü
  Aktif Konular Aktif Konular RSS - e-faturada yazı ile dövizli tutarın yazılması
  SSS SSS  Forumu Ara   Etkinlikler   Kayıt Ol Kayıt Ol  Giriş Giriş

ERP Nedir? Enterprise Resource Planning nasıl çalışır? İş süreçleri ile ilgili tüm soru ve cevapları ERPNe.org'da.

Ülkemizde hızla gelişmekte olan ERP yazılım sektörümüzün, Yerli ve Yabancı ERP işlemlerinin tanıtımı ve kullanıcılarının buluşma noktası olması hedefiyle kurulan sitemize hoş geldiniz.

Ülkemizdeki Ne.org konseptinde bir ilk olarak yayın hayatına başlayan ERPNe.org, Kurumsal Kaynak Planlaması yazılımlarını kullananların bilgi kaynağı/Portal olmak amacı ile kurulmuştur.

Genellikle yurt dışında büyük üreticiler tarafından geliştirilen SQL, Delphi, ASP, CSharp gibi teknolojilerin anlatıldığı sitelerin kullandıkları (WhatisSQL, WhatisASP) (Ülkemizde Netsis Nedir, Mikro Nedir, SAP Nedir yada Logo Nedir gibi kullanıcı sorularına) Ne ve nedir konseptinde yeni bir açılım olmasını da hedefleyen ERPNe.ORG' un, ülkemizin uluslararası ERP sektörü içinde hak ettiği yeri almasında ve ERP ürünlerini kullananların bir araya gelerek Yerli ERP'nin gelişmesine katkı sağlayacakları önemli bir kilometre taşı olacağı düşüncesindeyiz.


e-faturada yazı ile dövizli tutarın yazılması

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
aykuty Açılır Kutu İzle
Yeni Üye
Yeni Üye


Kayıt Tarihi: 05 Ağustos 2019
Konum: ankara
Durum: Aktif Değil
Puanlar: 5
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı aykuty Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: e-faturada yazı ile dövizli tutarın yazılması
    Gönderim Zamanı: 18 Şubat 2020 Saat 13:56
Merhaba,
e-fatura  tasarımında yazı ile tl tutarı getiriyoruz fakat dövizli tutarı yazabilecek bir etiket bulamadım.


Yanlız: Yüz USD oniki CENT şeklinde usd/ euro için yazdırmak istiyoruz.

bunun için bir etiket var mı?  

hazır taglar dışında ekranda fonksiyon ve sql kullanımınada ezin verilmiş ama bu alanların nasıl kullanılacağının çözemedim.

faturanın inckeyini parametre olarak verebileceğim bir fonksiyu burada kullanabiirsem  bu yazdırma işlemini orada yapabilirim.

yardımcı olursanız sevinirim.
teşekkürler


Yukarı Dön
mbaykan Açılır Kutu İzle
Kidemli Üye
Kidemli Üye
Simge

Kayıt Tarihi: 06 Nisan 2007
Konum: izmir
Durum: Aktif Değil
Puanlar: 1181
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı mbaykan Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 18 Şubat 2020 Saat 19:49
1085 veya 1086 yazı ile döviz tutarı alanı olacaktı
---------------
12.345,67 usd diyelim, sonuç (2 ondalığa göre)
ONİKİMİLYONBİNÜÇYÜZKIRKBEŞ,ALTMIŞYEDİ
şeklinde dönüyor
SQL REPLACE(x,'MİLYON','') fonksiyonu ile fazlalık MİLYON'u silersiniz

 


Düzenleyen mbaykan - 18 Şubat 2020 Saat 19:53
Mehmet Baykan
Yukarı Dön
Conari Açılır Kutu İzle
Kidemli Üye
Kidemli Üye
Simge

Kayıt Tarihi: 04 Mayıs 2007
Konum: YSTANBUL
Durum: Aktif Değil
Puanlar: 3513
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Conari Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 20 Şubat 2020 Saat 17:06
sql seçip,
"DÖVİZ TUTARI/ YALNIZ, "+VT_Karekter({1098})
araya para birimi eklemek için sonucu parçalamanız lazım.


Düzenleyen Conari - 20 Şubat 2020 Saat 17:20
Netsisden vazgeçemiyorum. Beni engelliyor..
Yukarı Dön
aykuty Açılır Kutu İzle
Yeni Üye
Yeni Üye


Kayıt Tarihi: 05 Ağustos 2019
Konum: ankara
Durum: Aktif Değil
Puanlar: 5
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı aykuty Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 26 Şubat 2020 Saat 11:14
teşekkürler.
sql tipini kullanıp aşağıdaki şekilde hazırladığımız fonksiyonu çağırdım. Bu arada efatura dizayn kısmında koşulları hiç bir şekilde çalıştıramadım. o yüzden koşuluda sql den yaptım. Yanlız bu işlem faturanın dövizli olup olmamasına göre çalışıyor. yani dövizli bir faturayı tl almak isterseniz bile aşağıda döviz tutarı yazacaktır. 

Eğer sistemin başta sorduğu sorunun cevabını test edebilirsem çok daha sağlıklı çalışacaktı ama yöntemini bulamadım. şimdilik döviz için ayrı bir tasarım oluşturup aşağıdaki şekilde yazdırdım.

Dövizli mi tl mi almak istiyorsunuz sorunun cevabını nasıl kontrol edebileceğimi bilen varsa paylaşırsa sevinirim.


Tasarımdaki SQL:
case when isnull( VT_Sayisal({1039}),0) > 0 then    
XXX2020.DBO.XXX_AY_YAZIYA_CEVIR( VT_Sayisal({1040}),  VT_Karekter({1053})  )  
else
XXX2020.DBO.XXX_AY_YAZIYA_CEVIR( VT_Sayisal({1035}),  'TL'  ) 
end



tutarı para birimine göre yazı ile yazan fonksiyom:
CREATE FUNCTION [dbo].[XXX_AY_YAZIYA_CEVIR] (@sayi Nvarchar(20), @KUR Nvarchar(20) = 'TL' ) RETURNS VARCHAR(250)
AS
BEGIN


declare @yazi Nvarchar(250) = ''
declare @yazi1 Nvarchar(250) = ''
declare @index tinyint
declare @indexVirgul tinyint
declare @indexNokta tinyint

declare @kurAna Nvarchar(16) = ''
declare @kurKusur Nvarchar(16) = ''

begin
select @indexVirgul = CHARINDEX(',',@sayi)
end


begin
 select @indexNokta = CHARINDEX('.',@sayi)
end


if @indexVirgul > 0 and @indexNokta > 0
begin
return ('HATA! Virgül ve noktanın birlikte kullanımı desteklenmiyor!')

end 


select @index =
(case
when @indexVirgul > 0  then  @indexVirgul
when @indexNokta > 0 then @indexNokta
else 0
end)


if upper(@KUR) = 'TL' OR upper(@KUR) = 'YTL' 
begin
SET @kurAna = 'TL'
SET @kurKusur = 'KURUŞ'


end else if upper(@KUR) = 'USD' 
begin
SET @kurAna = 'DOLAR'
SET @kurKusur = 'CENT'


end else if upper(@KUR) = 'EUR' OR upper(@KUR) = 'EURO' 
begin
SET @kurAna = 'EURO'
SET @kurKusur = 'CENT'


end else if upper(@KUR) = 'GBP' 
begin
SET @kurAna = 'STERLIN'
SET @kurKusur = 'POUND'

end






if @index > 0
begin
 set @sayi += '0000000'
 select @yazi = dbo.XXX_AY_YAZIYA_CEVIR_ISLEM(CONVERT(INT,SUBSTRING(@sayi,0,@index)),1)+' '+@kurAna
 
 --print CONVERT(INT,SUBSTRING(@sayi,0,@index))

 --if CONVERT(INT,SUBSTRING(@sayi,0,@index)) > 0
 --begin
 select @yazi1 = dbo.XXX_AY_YAZIYA_CEVIR_ISLEM(CONVERT(INT,SUBSTRING(@sayi,@index+1,2)),1)+' '+@kurKusur
 --end
 
end else begin
  select @yazi = dbo.XXX_AY_YAZIYA_CEVIR_ISLEM(CONVERT(INT,@sayi),1)+' '+@kurAna
end

if (ltrim(rtrim(@yazi)) = @kurAna) set @yazi = 'SIFIR '+ltrim(@yazi)
if (ltrim(rtrim(@yazi1)) = @kurKusur) set @yazi1 = ''/*'SIFIR '+ltrim(@yazi1)*/

set @yazi = ltrim(rtrim(@yazi+' '+@yazi1))


return (@yazi)

END








Sayıyı yazıya çeviren foksiyon.db de tanımlı:
CREATE function [dbo].[XXX_AY_YAZIYA_CEVIR_ISLEM](
  @sayi bigint
 ,@buyukharf INT = 1
)
returns nvarchar(max)

begin

declare @yaziilesayi nvarchar(max)
set @yaziilesayi = N''

declare @sayivarchar varchar(100)
set @sayivarchar = cast(@sayi as varchar(100))

declare @toplambasamak smallint
set @toplambasamak = len(@sayivarchar)

declare @basamak smallint
declare @rakam tinyint

declare @i smallint
set @i = 0

while @i < @toplambasamak
begin
 set @basamak = @toplambasamak - @i
 set @i = @i + 1
-- sıra ile soldan başlayarak rakamları oku
 set @rakam = substring(@sayivarchar, @i, 1)

 select
  @yaziilesayi = @yaziilesayi +
-- rakamın basamak değeri gözönüne alınarak metin oluşturuluyor
  case @rakam
  when 0 then N''
  when 1 then
   case @basamak % 3 when 0 then N'yüz' when 2 then N'on' when 1 then
    case when @toplambasamak = 4 and @i = 1 then N'' else
     case when @i = @toplambasamak then N'bir' else
      case when substring(@sayivarchar, @i-2, 2) = '00'
       then N'' else N'bir'
      end
     end
    end
   end
  when 2 then
   case @basamak % 3
    when 0 then N'iki yüz' when 2 then N'yirmi' when 1 then N'iki' end
  when 3 then
   case @basamak % 3
    when 0 then N'üç yüz' when 2 then N'otuz' when 1 then N'üç' end
  when 4 then
   case @basamak % 3
    when 0 then N'dört yüz' when 2 then N'kırk' when 1 then N'dört' end
  when 5 then
   case @basamak % 3
    when 0 then N'beş yüz' when 2 then N'elli' when 1 then N'beş' end
  when 6 then
   case @basamak % 3
    when 0 then N'altı yüz' when 2 then N'altmış' when 1 then N'altı' end
  when 7 then
   case @basamak % 3
    when 0 then N'yedi yüz' when 2 then N'yetmiş' when 1 then N'yedi' end
  when 8 then
   case @basamak % 3
    when 0 then N'sekiz yüz' when 2 then N'seksen' when 1 then N'sekiz' end
  when 9 then
   case @basamak % 3
    when 0 then N'dokuz yüz' when 2 then N'doksan' when 1 then N'dokuz' end
  end + space(1) +
  case @basamak
   when 4 then
    case when substring(reverse(@sayivarchar), @basamak, 3) = '000' then N'' else N'bin' end
   when 7 then
    case when substring(reverse(@sayivarchar), @basamak, 3) = '000' then N'' else N'milyon' end
   when 10 then
    case when substring(reverse(@sayivarchar), @basamak, 3) = '000' then N'' else N'milyar' end
   when 13 then
    case when substring(reverse(@sayivarchar), @basamak, 3) = '000' then N'' else N'trilyon' end
   when 16 then
    case when substring(reverse(@sayivarchar), @basamak, 3) = '000' then N'' else N'katrilyon' end
   else N''
  end + space(1)
end

-- Çevrim sırasında oluşabilecek fazla SPACE karakterleri temizleniyor
set @yaziilesayi = ltrim(rtrim(@yaziilesayi))

WHILE REPLACE(@yaziilesayi, space(2), space(1)) <> @yaziilesayi
BEGIN
 SELECT @yaziilesayi = DBO.TRK(REPLACE(@yaziilesayi, space(2), space(1)))
END

-- Metin büyük harflerle isteniyorsa UPPER fonksiyonu kullanılıyor
if @buyukharf = 1 set @yaziilesayi = DBO.TRK(UPPER(@yaziilesayi collate turkish_ci_as))

-- sayının yazı ile ifadesini içeren değişken döndürülüyor
return @yaziilesayi

end

Yukarı Dön
 Yanıt Yaz Yanıt Yaz
  Konu Paylaş   

Forum Atla Forum İzinleri Açılır Kutu İzle

Forum Software by Web Wiz Forums® version 11.10
Copyright ©2001-2017 Web Wiz Ltd.

Bu Sayfa 0,658 Saniyede Yüklendi.