Дипломная работа: Разработка программы "Модуль выгрузки данных в текстовом формате комплекса "Налогоплательщик ЮЛ" для государственной налоговой инспекции г. Узловая
14 sr 1 8 6 Начислено авансовых платежей ФСС: ставка 01/01/01 2 14 0
15 sr 1 10 8 Начислено авансовых платежей ФФОМС: ставка 01/01/01 2 14 0
16 sr 1 12 10 Начислено авансовых платежей ТФОМС: ставка 01/01/01 2 14 0
17 sr 1 14 12 Численность ПФР 01/01/01 2 14 0
18 sr 1 16 14 Численность ФСС 01/01/01 2 14 2
19 sr 1 7 5 Начислено авансовых платежей ПФР: cумма 01/01/01 2 14 0
20 sr 1 9 7 Начислено авансовых платежей ФСС: ставка 01/01/01 2 14 0
ИНФОРМАЦИЯ БАЗЫ ДАННЫХ SGR.DBF
Record# KODF KODP KODGR RGR NAIM NAIMP WDATA GO5N PP CHVGR CHRGR GNI GNI_IS
1 qf 2 1 0 Наименование показателя Расчет по страх.взносам 01/01/02 2 8 0
2 qf 2 2 0 Код строки Расчет по страх.взносам 01/01/02 2 8 0
3 qf 2 3 1 Для мужчин 1952г., женщин 1956г.по дан.страховат. Расчет по страх.взносам 01/01/02 2 8 0
4 qf 2 4 2 Для мужчин 1952г., женщин 1956г.по дан.НО Расчет по страх.взносам 01/01/02 2 8 1
5 qf 2 5 3 Для муж.1953-1966, жен.1957-1966 по дан.страховат. Расчет по страх.взносам 01/01/02 2 8 0
6 qf 2 6 4 Для муж.1953-1966, жен.1957-1966 по дан.НО Расчет по страх.взносам 01/01/02 2 8 1
7 qf 2 7 5 Для лиц 1967г.р. и моложе по данным страхователя Расчет по страх.взносам 01/01/02 2 8 0
8 qf 2 8 6 Для лиц 1967г.р. и моложе по данным НО Расчет по страх.взносам 01/01/02 2 8 1
9 qf 2 9 7 Всего по данным страхователя Расчет по страх.взносам 01/01/02 2 8 2
10 qf 2 10 8 Всего по данным налогового органа Расчет по страх.взносам 01/01/02 2 8 1
11 qf 3 1 0 Наименование показателя Справочно 01/01/02 2 3 0
12 qf 3 2 0 Код строки Справочно 01/01/02 2 3 0
13 qf 3 3 1 Всего Справочно 01/01/02 2 3 0
14 qf 3 4 2 В т.ч. на страховую часть трудовой пенсии Справочно 01/01/02 2 3 2
15 qf 3 5 3 В т.ч. на накопительную часть трудовой пенсии Справочно 01/01/02 2 3 0
16 qf 1 1 0 Наименование Сведения о налогоплательщике 01/01/02 2 1 0
17 qf 1 2 0 Код строки Сведения о налогоплательщике 01/01/02 2 1 0
18 qf 1 3 1 Значение/Код Сведения о налогоплательщике 01/01/02 2 1 0
19 qd 2 1 0 Наименование Расчет для заполнения с.0300 и 0400 01/01/02 2 14 0
20 qd 2 2 0 Код строки Расчет для заполнения с.0300 и 0400 01/01/02 2 14 0
ИНФОРМАЦИЯ БАЗЫ ДАННЫХ K029.DBF
Record# C257 C258 K
1 0373 млн.руб. 1000000
2 0374 млрд.руб. 1000000000
3 0006 м 1
4 0008 км 1000
5 0055 кв.м 1
6 0056 тыс.кв.м 1000
7 0059 га 10000
8 0061 кв.км 1000000
9 0062 тыс.га 10000000
10 0744 % 1
11 0770 кратн. 1
12 0113 куб.м 1
13 0114 тыс.куб.м 1000
14 0115 млн.куб.м 1000000
15 0162 карат 1
16 0165 тыс.кар 1000
17 0166 кг 1
18 0167 ц 100
19 0168 т 1000
20 0170 тыс.т 1000000
21 0238 лс 1
22 0796 шт 1
23 0798 тыс.шт 1000
24 0797 100 шт 100
25 0799 млн.шт 1000000
26 0120 л 1
27 0124 тыс.л 1000
28 0371 руб. 1
29 0372 тыс.руб. 1000
30 0642 Ед. 1
31 0792 чел. 1
32 0793 тыс.чел. 1000
33 0794 млн.чел. 1000000
34 0795 млрд.чел. 1000000000
35 0214 КВт 1
36 0119 тыс.дкл 1000
37 0116 дкл 1
ИНФОРМАЦИЯ БАЗЫ ДАННЫХ SPUTR.DBF
Record# RAZDEL TAXCODE NDAT PRUT PARAG
1 21 102011101 09/01/95 1 1
2 80 101020201 01/01/99 1 1
Приложение Б
(обязательное)
Выходная информация
ИдФайл:2129000988**212901001200101102936
ТипИнф:ДЕКЛАРАЦИЯЮЛ
НаимОтпрЮл:Здесь должно быть наименование предприятия.
ТелОтпр:000-00-01
ДолжОтпр:
ФИООтпр:ФИО бухгалтера
КолДок:1
ВерсПрог:INPUTDOC
@@@
ИдДок:2129000988**212901001200100000001
КНД:1151006
НаимФОтч:Расчет налога от фактической прибыли
ПеридОтч:2000,К4
ДатаДок:30.11.2000
ОКЕИ:383
ВарДекл:999
КолПокФОтч:18
П010000103:1230.000
П010000303:5670.000
П010000403:0.000
П010000503:0.000
П010000603:0.000
П010000703:0.000
П010000803:0.000
П010000903:0.000
П010001003:0.000
П010001103:0.000
П010001203:0.000
П010001303:01 12..2000
П010001603: . .
П010001703: 04.06.1999
П010002а03:0.000
П010002б03:0.000
П010002в03:0.000
П010002г03:0.000
КНД:0710001
НаимФОтч:Бухгалтерский баланс
ПеридОтч:2000,К4
ДатаДок:09.12.2000
ОКЕИ:384
ВарДекл:999
КолПокФОтч:17
П010011003:456.000
П010011004:0.000
П010011103:45645.000
П010011104:0.000
П010011203:65.000
П010011204:0.000
П010011303:456.000
П010011304:0.000
П010012003:45.000
П010012004:0.000
П010012103:64.000
П010012104:0.000
П010012203:456.000
П010012204:0.000
П010013003:4564.000
П010013004:0.000
П010013503:6456.000
@@@
===
Приложение В
(обязательное)
Текст программы
&&---получение списка существующих документов--(открытие БД осуществляет вызывающий модуль!)
wait window nowait 'Идет подготовка данных'
YearC=iif(val(sDT)>50,'19'+sDT,'20'+sDT)
FltDocC='KONTROL="1" ' && фильтр на KP_SD
select KP_SD
set filter to &FltDocC
go top
do while not eof()
&& определяем имя и период
do case
case KP_SD.PER='1'
FileNameC=KP_SD.KODF+sKW+sDT
PeriodTxtC=YearC+',М'+alltrim(str(sPERIO,2))
case KP_SD.PER='2'
KvartC=str(int((sPERIO-1)/3)+1,1)
FileNameC=KP_SD.KODF+KvartC+sDT
PeriodTxtC=YearC+',К'+KvartC
case KP_SD.PER='3'
YerHlfC=iif(sPERIO>6,'2','1')
KvartC=iif(sPERIO>6,'4','2')
FileNameC=KP_SD.KODF+YerHlfC+sDT
PeriodTxtC=YearC+',К'+KvartC
case KP_SD.PER='4'
FileNameC=KP_SD.KODF+sDT
PeriodTxtC=YearC+',Г'
otherwise
FileNameC=''
PeriodTxtC=''
ENDCASE
&&---------------------------------------------------------------------------------------------------------------
DO CASE
CASE kp_sd.per='2'
nperN=int((_sysMonthN-1)/3)+1
CASE kp_sd.per='3'
nperN=iif(_sysMonthN>6,2,1)
CASE kp_sd.per='4'
nperN=1
OTHERWISE
nperN=_sysMonthN
ENDCASE
&&-------------------------------------------------------------------------------------------------------------------
if empty(kp_sd)
do getmper with kp_sd.kodf,_sysYearN,kp_sd.per,nperN
else
do getmper with left(kp_sd.prvlog,2),_sysYearN,kp_sd.per,nperN
endif
DO CASE
CASE mperiod.period='2'
KvartC=str(int((sPERIO-1)/3)+1,1)
PeriodTxtC=YearC+',К'+KvartC
CASE mperiod.period='3'
YerHlfC=iif(sPERIO>6,'2','1')
KvartC=iif(sPERIO>6,'4','2')
PeriodTxtC=YearC+',К'+KvartC
CASE mperiod.period='4'
PeriodTxtC=YearC+',Г'
OTHERWISE
PeriodTxtC=YearC+',М'+alltrim(str(sPERIO,2))
ENDCASE
&& получаем список переменных строк----------------------------------------------------------------------------
flykodC=''
SELECT 0
IF docwdataD=kp_sd.wdata
USE (_bases+kp_sd.kodf+'_POK') ALIAS pok
SET ORDER TO TAG pok
SET FILTER TO inlist(left(alltrim(kods),1),':','~')
ELSE
USE (_bases+'POK')
SET ORDER TO TAG pok
SET FILTER TO kodf=kp_sd.kodf ;
AND wdata=docwdataD ;
AND inlist(left(alltrim(kods),1),':','~')
ENDIF
GO TOP
DO WHILE NOT eof()
flykodC=flykodC+alltrim(str(pok.ykod,3))+';'
SKIP
ENDDO
USE IN pok
select 0
use (___user+FileNameC) alias XXZZYY
select 0
&& получаем список уточнений------------------------------------------------------------------------------------------
select max(val(UT)) AS utn ;
from XXZZYY ;
into table (old_vtemp+'AllUT')
select AllUT
go top
do while not eof()
&& заполняем список документов------------------------------------------------------------------------------------
if _UseKND
KNDTxtC=iif(empty(alltrim(KP_SD.KND)) or (alltrim(KP_SD.KND)=='0'),'1150000',KP_SD.KND)
else
KNDTxtC=KP_SD.KODF
endif
select HaveDoc
append blank
replace KODF with KP_SD.KODF, ;
UT with str(AllUt.UTn,2), ;
NAIM with KP_SD.NAIM, ;
FileName with FileNameC, ;
SDWDATA with KP_SD.WDATA, ;
PERIODTXT with PERIODTXTC, ;
KNDTXT with KNDTxtC, ;
wdata WITH docwdataD, ;
flykod WITH flykodC, ;
prvlog WITH kp_sd.prvlog, ;
prd WITH kp_sd.prd, ;
_knd WITH kp_sd.knd, ;
prmnog WITH kp_sd.prmnog
select AllUt
skip
enddo
select AllUt
use
select XXZZYY
use
endif
select KP_SD
skip
enddo
wait clear
if DocList.WDATA=DocList.SDWDATA
select ExpDcPok
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with 'П000000101', ;
FieldName with 'KOMM'
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with 'П000000201', ;
FieldName with 'RASSH'
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with 'П000000301', ;
FieldName with 'C257N'
SELECT 0
USE (_bases+doclist.kodf+'_POK') alias pok
set order to tag POK
go top
do while not eof()
if not empty(KODS) and (not (alltrim(KODS)=='0'))
select kp_sgr
set filter to KODF=DocList.KODF and KODP=POK.KODP and RGR<>0
go top
do while not eof()
scrC=subdat1(pok.twd,kp_sgr.rgr)
IF NOT empty(scrC)
typeC=substr(scrC,1,1)
sc1N=at('(',scrC)
sc2N=at(')',scrC)
zpN=at(',',scrC)
IF zpN=0
lenN=val(substr(scrC,sc1N+1,sc2N-sc1N-1))
decN=0
ELSE
lenN=val(substr(scrC,sc1N+1,zpN-sc1N-1))
decN=val(substr(scrC,zpN+1,sc2N-zpN-1))
ENDIF
ENDIF
YKodN=POK.YKOD
KodPN=POK.KODP
KodSC=strtran(POK.KODS,':','')
KodGN=kp_SGR.KODGR
RGRN=kp_SGR.RGR
GNIN=iif(kp_SGR.GNI=1,1,0)
TxtPokC='П'
TxtPokC=TxtPokC+iif(KodPN>=10,str(KodPN,2),'0'+str(KodPN,1))
TxtPokC=TxtPokC+replicate('0',5-len(alltrim(KodSC)))+alltrim(KodSC)
TxtPokC=TxtPokC+iif(KodGN>=10,str(KodGN,2),'0'+str(KodGN,1))
FieldNameC=DocList.KODF+alltrim(str(YKodN,3))+'_'+alltrim(str(RGRN,2))
select ExpDcPok
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with TxtPokC, ;
FieldName with FieldNameC, ;
type WITH typeC, ;
len WITH lenN, ;
dec WITH decN
select kp_SGR
skip
enddo
endif
select POK
skip
enddo
USE IN pok
else
select ExpDcPok
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with 'П000000101', ;
FieldName with 'KOMM'
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with 'П000000201', ;
FieldName with 'RASSH'
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with 'П000000301', ;
FieldName with 'C257N'
SELECT 0
USE (_bases+'POK')
set order to tag POK
set filter to KODF=DocList.KODF and WDATA=DocList.WDATA
go top
do while not eof()
if not empty(KODS) and (not (alltrim(KODS)=='0'))
select SGR
set filter to KODF=DocList.KODF and KODP=POK.KODP and WDATA=DocList.WDATA and RGR<>0
go top
do while not eof()
scrC=subdat1(pok.twd,sgr.rgr)
IF NOT empty(scrC)
typeC=substr(scrC,1,1)
sc1N=at('(',scrC)
sc2N=at(')',scrC)
zpN=at(',',scrC)
IF zpN=0
lenN=val(substr(scrC,sc1N+1,sc2N-sc1N-1))
decN=0
ELSE
lenN=val(substr(scrC,sc1N+1,zpN-sc1N-1))
decN=val(substr(scrC,zpN+1,sc2N-zpN-1)) ENDIF
ELSE
IF pok.td='U'
typeC=substr(pok.td1,sgr.rgr,1)
ELSE
typeC=pok.td
ENDIF
DO CASE
CASE typeC='C'
lenN=15
decN=0
CASE typeC='D'
lenN=8
decN=0
OTHERWISE
typeC='N'
lenN=15
decN=3
ENDCASE
ENDIF
if pok.td=='U'
if len(alltrim(pok.td1))>=SGR.RGR
TypeC=substr(pok.td1,SGR.RGR,1)
else
TypeC='N'
endif
else
TypeC=pok.td
endif
YKodN=POK.YKOD
KodPN=POK.KODP
KodSC=strtran(POK.KODS,':','')
KodGN=SGR.KODGR
RGRN=SGR.RGR
GNIN=iif(SGR.GNI=1,1,0)
TxtPokC='П'
TxtPokC=TxtPokC+iif(KodPN>=10,str(KodPN,2),'0'+str(KodPN,1))
TxtPokC=TxtPokC+replicate('0',5-len(alltrim(KodSC)))+alltrim(KodSC)
TxtPokC=TxtPokC+iif(KodGN>=10,str(KodGN,2),'0'+str(KodGN,1))
FieldNameC=DocList.KODF+alltrim(str(YKodN,3))+'_'+alltrim(str(RGRN,2))
select ExpDcPok
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with TxtPokC, ;
FieldName with FieldNameC, ;
type WITH typeC, ;
len WITH lenN, ;
dec WITH decN
select SGR
skip
enddo
endif
select POK
skip
enddo
USE IN pok
endif
&&-----------------------------------------------------------------
aPath=alltrim(upper(bPath))
if right(aPath,1)<>'\'
aPath=aPath+'\'
endif
aDrv=left(aPath,1)
if !cdrv(aDrv)
if aDrv='A' .or. aDrv='B'
do while !cdrv(aDrv)
if MESSAGEBOX('Вставьте диск в дисковод '+aDrv+':',64+1)<>1
RETURN .F.
endif
enddo
else
MESSAGEBOX('Диск '+aDrv+': не существует.', 16)
RETURN .F.
endif
endif
isOkPath=.t.
PRIVATE olderrC
olderrC=ON('ERROR')
on error isOkPath=.f.
SetDefault(aPath) &&&&set default to &aPath
ON ERROR &olderrC
SetDefault(root_dir) &&&&set default to &root_dir
if !isOkPath
MESSAGEBOX('Неправильный путь к файлу.', 16)
RETURN .F.
endif
&& формирование текстового файла
wait window nowait 'Идет подготовка файла'
define window wtxt from 24,79 to 24,79 none
activate window wtxt noshow
set alternate to (old_vtemp+aFileName)
set alternate on
set console off
?? 'ИдФайл:'+alltrim(sIdOtp)
? 'ТипИнф:'+alltrim(sType)
? 'НаимОтпрЮл:'+alltrim(sDan)
? 'ТелОтпр:'+alltrim(sTel)
? 'ДолжнОтпр:'+alltrim(sDol)
? 'ФИООтпр:'+alltrim(sFIO)
? 'КолДок:1'
? 'ВерсПрог:'+alltrim(sVer)
? '@@@'
? 'ИдДок:'+alltrim(sIdDoc)
isOkAll=.f.
do AddDoc
? '@@@'
? '==='
release window wtxt
set alternate to
set console on
wait clear
if !isOkAll
MESSAGEBOX('Нет передаваемых показателей во всех передаваемых документах. Копируемый файл не создан', 16)
else
wait window nowait 'Выполняется копирование файла'
DO WinToDos IN _bin+'oninit.prg' WITH old_vtemp+aFileName, aPath+aFileName
wait clear
messagebox('Выгрузка завершена.', 64)
endif
clear read
SELECT 0
USE (_bases+'NOMFILE')
LOCATE FOR year=_sysYearN
REPLACE nomfile WITH nomfile+1
USE
return .t.
&&-----------------------------------------------------------------
procedure AddDoc
select DocList
go topdo while not eof()
wait wind nowait 'Идет подготовка данных'
select ExpDcPok
set filter to KODF=DocList.KODF and WDATA=DocList.WDATA
count to PkCntN
if PkCntN>0
isOkAll=.t.
do AddDoc01
else
MESSAGEBOX('Документ: '+DocList.NAIM + CHR(13) +;
'Уточнение: '+iif(val(DocList.UT)=0,'Основной расчет',DocList.UT+' уточнение')+;
'Нет передаваемых показателей. Документ будет пропущен.',64)
endif select DocList
skip
enddo
wait clear
return
|