seri atlama kontrol

This commit is contained in:
Uğur Özpınar 2019-10-11 11:47:09 +03:00
parent 0a00b17533
commit d1a22e1fe4
3 changed files with 83 additions and 0 deletions

View File

@ -6,6 +6,7 @@ Logo Tiger Enterprise özel raporlar
### [Çekler Raporu](cekler.sql "Logo Muhasebe Programı Çekler Raporu")
### [Muhasebe Fiş Hareketlerinden Yaşlandırma Raporu](Borc%20Yaslandirma "Logo Tiger Muhasebe Programı Borç Yaşlandırma")
### [Faturalar Satır Detaylı](Faturalar%20Sat%C4%B1r%20Detayl%C4%B1 "Satır Bazında Fatura Detay İndirilecek KDV")
### [Veri Düzeltmeleri ve Kontrol](Veri%20Düzeltmeleri "Veri düzeltmeleri ve kontrol")
## Repo Hakkında

View File

@ -0,0 +1,12 @@
# Veri Düzeltme ve Kontrol
### [Fatura Atlama Kontrolü](fatura_atlama_kontrol.sql)
Fatura/İrsaliye seri no atlamalarını kontrol etmek için rapor
### [E-Fatura Kilit Açma Düzenleme](efatura_kilitacma.sql)
Fatura gönderildiğinde ESTATUS hanesi sıfırdan farklı değerler alıyor ve o faturada değişiklik yapılması engelleniyor haklı olarak.
Ama fiyat ve miktar harici sütunlarda değişiklik yapılmak istenebiliyor sonrasında. Bunun için aşağıdaki işlemleri uyguluyorum
### [Şifre Sıfırlama](şifre%20sıfırlama.sql)
LOGO Kullanıcısının şifresini sıfırlama
Update sonrasında şifre "LOGO" olacaktır

View File

@ -0,0 +1,70 @@
-- Değişmesi gerekenler : DATABASEADI, _001_01
-- Önce generate_series fonksiyonu oluşturulur
-- Fonksiyon başlangıç --
USE [DATABASEADI]
GO
/****** Object: UserDefinedFunction [dbo].[generate_series] Script Date: 10/11/2019 11:39:08 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[generate_series]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[generate_series]
GO
USE [DATABASEADI]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[generate_series] ( @p_start INT, @p_end INT, @p_step INT=1 )
RETURNS @Integers TABLE ( [IntValue] INT )
AS
BEGIN
DECLARE
@v_i INT,
@v_step INT,
@v_terminating_value INT;
BEGIN
SET @v_i = CASE WHEN @p_start IS NULL THEN 1 ELSE @p_start END;
SET @v_step = CASE WHEN @p_step IS NULL OR @p_step = 0 THEN 1 ELSE @p_step END;
SET @v_terminating_value = @p_start + CONVERT(INT,ABS(@p_start-@p_end) / ABS(@v_step) ) * @v_step;
IF NOT ( ( @p_start > @p_end AND SIGN(@p_step) = 1 )
OR
( @p_start < @p_end AND SIGN(@p_step) = -1 ))
BEGIN
WHILE ( 1 = 1 )
BEGIN
INSERT INTO @Integers ( [IntValue] ) VALUES ( @v_i )
IF ( @v_i = @v_terminating_value )
BREAK
SET @v_i = @v_i + @v_step;
END;
END;
END;
RETURN
END
GO
-- Fonksiyon bitiş --
create table #artificial_range(
DOC NVARCHAR(50) not null) ;
INSERT INTO #artificial_range
SELECT 'AAA2016'+RIGHT('000000000'+CAST(g.IntValue AS VARCHAR(9)),9) AS generate_series FROM generate_series(1,4000,1) g;
--Fatura belge no şablonunun nasıl ise. Örnekteki şablonda örnek fatura serisi şu şekilde AAA2016000001373. Yani başlangıcı AAA2016, sonrasında sıfırla tamamlanan 9 karakter.
select * from #artificial_range r
WHERE r.DOC NOT IN(SELECT FICHENO FROM LG_001_01_INVOICE)
ORDER BY r.DOC ASC
If(OBJECT_ID('tempdb..#artificial_range') Is Not Null)
Begin
Drop Table #artificial_range
End