// НАЛОГОВЫЙ РЕГИСТР ПО УЧЕТУ НАЛОГА НА ДОХОДЫ ФИЗИЧЕСКИХ ЛИЦ (НДФЛ) ЗА 2018 int bSimplePayedTax = 0; // Упрощенная "уплата" (уплачено равно удержано) int bGetPaysFromTabl = 0; // список платежек берем из сформированной таблицы int flgtax = 0; // 0 - налог по каждой процентной ставке вычисляется своим алгоритмом // 1 - налог вычисляет 205й алгоритм int bCumulativeTax = false; var CFile_DL, // объект класса для работы с текущим файлом печати CTabl; // объект класса для работы таблицей var fullFileName; var CMsg=0; // Процент выполненной работы int bTime = false; // false-показывать процент, // true-показывать оставшееся время int cWsh=1, // число worksheet'ов в workbook'е cWb=1, // число workbook'ов cWbTmp=1; // число временных workbook'ов int SizePage_DL, // число строк на листе KindPaper_DL, // тип бумаги (0-рулон; 1-лист) cListInBook=200+1; // максимальное число листов в книге (для печати в Excel) (+1 это шаблон) int idxOrgName = 0, // Наименование организации idxOrgInn = 1, // ИНН организации idxOrgKpp = 2, // КПП организации idxOrgCodNi = 3, // Код налоговой инспекции idxOrgOKATO = 4, // Код общероссийского классификатора объектов административно-территориального деления // ОКАТО (ОК 019-95 утвержден постановлением Госстандарта России от 31.07.1995 № 413) idxOrgGod = 5, // год за который формируется налоговая карточка idxOrgBEG = 6, // календарный месяц начала периода idxOrgEND = 7, // календарный месяц конца периода idxOrgOtvN = 8, // ФИО ответственного за ведение налоговых карточек idxOrgDolN = 9, // должность ответственного за ведение налоговых карточек nOrg = 10; int orgFld[nOrg]; int idxNpInn = 0, // ИНН налогоплательщика idxNpPF = 1, // номер страхового свидетельства в ПФР idxNpFam = 2, // Фамилия idxNpName = 3, // Имя idxNpOtch = 4, // Отчество idxNpDocVid = 5, // вид документа удостоверяющего личность idxNpCodDok = 6, // код документа удостоверяющего личность idxNpSerDok = 7, // серия документа удостоверяющего личность idxNpDocNum = 8, // номер документа удостоверяющего личность idxNpAdrCountry = 9, // код страны idxNpAdr = 10, // адрес idxNpStatus = 11, // статус idxNpStatusDoc = 12, // реквизиты документа подтверждающего статус idxNpStdNalDis = 13, // стандартные налоговые вычеты заявлены (1), не заявлены (2) idxNpCitizen = 14, // гражданство idxNpBirthday = 15, // дата рождения (число, месяц, год) idxNpFIO = 16, // фамилия, инициалы idxNpTN = 17, // табельный номер idxNOTIFN = 18, idxNOTIFS = 19, nNp = 20; int npFld[nNp]; int idxTaxPERIOD = 0, // (12) налогооблагаемый период idxTaxTAX_FREE = 1, // (1) признак обложения налогом idxTaxMONTHINC = 2, // (255) совокупный доход по месяцам idxTaxINCCODE = 3, // (255) виды доходов в налогооблагаемом периоде idxTaxNEDV = 4, // (178) объект недвижимости idxTaxSNEDV = 5, // (12.2) сумма недвижимости idxTaxINCIST = 6, // (255) совокупный доход по месяцам по источнику выплаты idxTaxTAXLAST = 7, // (255) налог за прошлый год idxTaxFTAX = 8, // (14.2) налог удержанный в будущем году в счет отчетного периода idxTaxLTAX = 9, // (14.2) налог удержанный в отчетном периоде в счет прошлого года nTax = 10; int txFld[nTax]; int idxTaxDED = 0, // (255) вычеты idxTaxI = 1, // (255) доходы без скидок idxTaxDI = 2, // (255) доходы со скидками idxTaxPRLIST = 3, // (255) суммы дохода idxTaxRKLIST = 4, // (255) суммы по РК idxTaxPFLIST = 5, // (255) суммы по выгоде idxTaxFLLIST = 6, // (255) общие суммы idxTaxINCODNR = 7, // (255) виды дох. б/в иностр. idxTaxINCODNRD = 8, // (255) виды дох. с/в иностр. idxTaxTAXRF = 9, // (255) налоги в бюдж. РФ idxTaxTAXVZ = 10, // (13.2) налог переданный на взыскание idxTaxRECK = 11, // (13.2) сумма принимаемая к зачету idxTaxFUTTAX = 12, // (14.2) налог удержанный в будущем году в счет отчетного периода idxTaxDEDW = 13, // (14.2) реально учтенная общая сумма вычетов idxTaxTAX07_N = 14, // (14.2) налог исчисленный 13% idxTaxTAX07_C = 15, // (14.2) налог исчисленный 9% idxTaxTAX07_F = 16, // (14.2) налог исчисленный 35% idxTaxTAX13_N = 17, // (14.2) налог удержанный 13% idxTaxTAX13_C = 18, // (14.2) налог удержанный 9% idxTaxTAX13_F = 19, // (14.2) налог удержанный 35% idxTaxFTAX_C = 20, // (14.2) налог удержанный в будущем году в счет отчетного периода 9% idxTaxFTAX_F = 21, // (14.2) налог удержанный в будущем году в счет отчетного периода 35% idxTaxVTAX_C = 22, // (14.2) налог переданный на взыскание 9% idxTaxVTAX_F = 23, // (14.2) налог переданный на взыскание 35% idxTaxI_9 = 24, // (14.2) доход 9% idxTaxI_35 = 25, // (14.2) доход 35% idxTaxPays_13 = 26, // уплата 13% idxTaxPays_30 = 27, // уплата 30% idxTaxPays_9 = 28, // уплата 9% idxTaxPays_35 = 29, // уплата 35% idxTaxPays_15 = 30, // уплата 15% (дивиденды) idxTaxPays5m_15 = 31, // уплата 15% (>5 миллионов) idxPrim5 = 32, // сумма дохода > 5 млн idxPrim5TaxIsch = 33, // налог исчисленный с дохода > 5 млн idxPrim5TaxUder = 34, // налог удержанный с дохода > 5 млн idxDiv5 = 35, // сумма дивидендов > 5 млн idxDiv5TaxIsch = 36, // налог исчисленный с дивидендов > 5 млн idxDiv5TaxUder = 37, // налог удержанный с дивидендов > 5 млн nTaxMes = 38; int msFld[nTaxMes][12]; int n31col=14, // размерность массива sec31 (доходы по месяцам) n31row=50, n34col=14, // размерность массива sec34 (стандартные вычеты по месяцам) n34row=50, n32col=14, // размерность массива sec32 (вычеты за искл. стандартных) n32row=50, n32icol=14, // размерность массива sec32i (имуществ.вычеты) n32irow=50, n32scol=14, // размерность массива sec32s (социальные вычеты) n32srow=50, n3_9col=14, // размерность массива sec3_9 (доходы по месяцам 9%) n3_9row=2, n3_35col=14,// размерность массива sec3_35 (доходы по месяцам 35%) n3_35row=2, n33col=14, // размерность массива sec33 (общая сумма доходов за минусом вычетов) n33row=2, n3inc5col=14, // размерность массива sec3inc5 n3inc5row=2, n3div5col=14, // размерность массива sec3div5 n3div5row=2, nTcol=14, // налоги: по 1 таблице: строки 0-начислено, 1-удержано, 2-долг плательщиком, 3-долг за агентом nTrow=24, // по 2 таблице: строки 4-начислено, 5-удержано, 6-долг плательщиком, 7-долг за агентом // по 3 таблице: строки 8-начислено, 9-удержано,10-долг плательщиком,11-долг за агентом // итого: 12-начислено,13-удержано,14-долг плательщиком,15-долг за агентом n36col=14, // размерность массива sec36 ( взыскание и возврат налога ) n36row=2, n45col=5, // размерность массива sec45 n45row=7, // 6 // 5 n4col=13, // размерность массива sec4 ( дивиденды ) n4row=7, n5col=13, // размерность массива sec5 ( выгода ) n5row=8, n6col=7, // размерность массива sec6 ( общая сумма налога по итогам года ) n6row=5, n7col=14, // размерность массива sec7 n7row=3; // ( сведения о доходах, налогообложение которых осуществляется налоговыми органами ) int mBEG, // месяц начала mEND; // месяц конца int nKart=0; // номер карточки double eps = 0.001; int len = 512; char str[len]; char str1[len]; char FileName[len]; char period[20]; int Recalc = 1, // с учетом пересчета (1), или нет (0) Format = 2, Wsname = 0; string Data; // дата проверки ответственным за ведение налоговых карточек ReadParam(¶m,np) // чтение параметров { if ( np > 0 ) Wsname = atoi(param[0]); if ( np > 1 ) Recalc = atoi(param[1]); if ( np > 2 ) Data = param[2]; if ( np > 3 ) bSimplePayedTax = atoi(param[3]); if ( np > 4 ) bGetPaysFromTabl = atoi(param[4]); return 0; } bool IsMoreThan5MillionIncomeTax = false; tax_reg(¶m,np) { ReadParam(param,np); CMsg = CreateObject("ProgressBar"); CMsg.Initial(0,100,1); CMsg.SetShowTime(to_int(bTime)); CFile_DL = CreateObject("CurPrnFile"); CFile_DL.SetFlagBrowse(0); CFile_DL.SetFlag_Print(0); CTabl = CreateObject("CurPrnTbl"); int cr = CTabl.Count_Rcr(); // число рабочих зaписей в таблице if ( !cr ) return 0; int CR_INS=CTabl.GetCountInsertRcr(); // число выделенных записей int REC_INS=0; FillFldOrg(); // ищем поля в таблице mBEG=atoi(CTabl.Text(orgFld[idxOrgBEG],0)); // календарный месяц начала периода mEND=atoi(CTabl.Text(orgFld[idxOrgEND],0)); // календарный месяц конца периода FillFld(); // ищем поля в таблице string aOrg[nOrg]; // сведения о налоговом агенте (источнике дохода) string aNp[nNp]; // сведения о налогоплательщике (получателе дохода) string aTax[nTax], // доходы и налоги, общая часть aTaxMes[nTaxMes][12]; // по месяцам // массивы для раздела 3 string sec30[3]; // долги за налогоплат. и агентом и доход с предыдущего места работы string sec31[n31row][n31col+1]; // доходы по месяцам string sec32[n32row][n32col+1]; // вычеты за искл. стандартных string sec32i[n32irow][n32icol+1]; // имуществ.вычеты string sec32s[n32srow][n32scol+1]; // социальные вычеты string sec33[n33row][n33col+1]; // общая сумма доходов за минусом вычетов string sec34[n34row][n34col+1]; // стандартные вычеты по месяцам string sec35[14]; // налоговая база с начала года string secTax[nTrow][nTcol+1]; // налоги string sec36[n36row][n36col]; // взыскание и возврат налога string sec3_9 [n3_9row][n3_9col+1]; // доходы по месяцам 9% string sec3_35[n3_35row][n3_35col+1]; // доходы по месяцам 35% string sec3inc5[n3inc5row][n3inc5col]; // суммы дохода > 5 миллинонов string sec3div5[n3div5row][n3div5col]; // суммы дивидендов > 5 миллионов // массив для раздела 45 string sec45[n45row][n45col]; // общий расчет налоговых обязательств // массивы для разделов 4, 5, 6, 7 string sec4[n4row][n4col]; // дивиденты string sec5[n5row][n5col]; // выгода string sec6[n6row][n6col]; // итоговые суммы налога string sec7[n7row][n7col]; // доходы облагаемые налоговыми органами char Dir[len]; string WorkDir, // рабочий каталог nm, // имя файла tmpnm; // имя временного файла FillOrg(aOrg,nOrg,CTabl); IsMoreThan5MillionIncomeTax = CTabl.Find_Name_Fld("PT5m15_01") != -1 && atoi(aOrg[idxOrgGod]) >= 2021; ToAnsi(aOrg,nOrg); GetCurrentDirectory(len-1,Dir); nm = "tax_reg.xlt"; WorkDir = Dir + "\\"+NameCommonDir()+"\\"; fullFileName = GetPathXLT(NameCommonDir(),nm); tPrepereOfficeForWork(); // определяем работать на Excel или на Calc (определяем какой из офисов (MS Office или OpenOffice) установлен и какой предпочтительнее) tCreateXlsObjects(fullFileName,"Налоговый регистр по учету НДФЛ"); tGetWshByIndex(1); //tMakeXlsVisible(); if ( !IsMoreThan5MillionIncomeTax ) HideRowsFor5MillionIncomeTax(); // убираем мусор DeleteFiles(WorkDir,"wb*.tmp"); // ищем подходящее имя для файла, расширение "tmp" для того чтобы эти файлы автоматически уничтожались // при выходе из АМБы, если же остался "мусор" то подбираем имя (FileName) перебирая номера (cWbTmp) for (;;) { sprintf(FileName,"wb%d.tmp", cWbTmp); tmpnm=WorkDir+FileName; if ( access(tmpnm,0) ) { break; } else { cWbTmp++; continue; } } try { var OldWshName = ""; int OldWshCount = 1; // цикл по записям таблицы for (int zap=0; zap eps ) { DatNot.SetDateD(GetDateNotifImmovable(aNp[idxNOTIFN])); if ( DatNot.IsValid() ) { GetNumNotifImmovable(aNp[idxNOTIFN],NumNotif,50); GetCodNINotifImmovable(aNp[idxNOTIFN],CodNINotif,50); sprintf(str,"№ %s, дата %s, код налогового органа %s",NumNotif,DatNot.GetStr(),CodNINotif); tWriteStringToCell("BO21",OemToAnsi(str)); } } // 3.4 Реквизиты уведомления, подтверждающего право на социальнный вычет if ( nabs(SumSocV) > eps ) { DatNot.SetDateD(GetDateNotifImmovable(aNp[idxNOTIFS])); if ( DatNot.IsValid() ) { GetNumNotifImmovable(aNp[idxNOTIFS],NumNotif,50); GetCodNINotifImmovable(aNp[idxNOTIFS],CodNINotif,50); sprintf(str,"№ %s, дата %s, код налогового органа %s",NumNotif,DatNot.GetStr(),CodNINotif); tWriteStringToCell("BO22",OemToAnsi(str)); } } // Налоговая база по ставке 13% или 30% int status=atoi(aNp[idxNpStatus]); if ( status!=2 ) { // по ставке 13% FillRowInTabl3(sec33,0,n33row,n33col,51,CountDif,0,cell,dp);//,DataZP); // Сумма налога исчисленная и удержанная FillRowInTabl3(secTax,0,2,nTcol,53,CountDif,0,cell,dp);//,DataZP); // по ставке 13% (дивиденды) FillRowInTabl3(sec3_9,0,n3_9row,n3_9col,55,CountDif,0,cell,dp);//,DataZP); // Сумма налога исчисленная и удержанная FillRowInTabl3(secTax,8,10,nTcol,57-8,CountDif,0,cell,dp);//,DataZP); } else { // по ставке 30% FillRowInTabl3(sec33,0,n33row,n33col,59,CountDif,0,cell,dp); // Сумма налога исчисленная и удержанная FillRowInTabl3(secTax,0,2,nTcol,61,CountDif,0,cell,dp); // по ставке 15% FillRowInTabl3(sec3_9,0,n3_9row,n3_9col,67,CountDif,0,cell,dp); // Сумма налога исчисленная и удержанная FillRowInTabl3(secTax,8,10,nTcol,69-8,CountDif,0,cell,dp); } // по ставке 35% FillRowInTabl3(sec3_35,0,n3_35row,n3_35col,63,CountDif,0,cell,dp); // Сумма налога исчисленная и удержанная FillRowInTabl3(secTax,4,6,nTcol,65-4,CountDif,0,cell,dp); // ИТОГИ // Сумма налога исчисленная и удержанная FillRowInTabl3(secTax,12,14,nTcol,74-12+8,CountDif,0,cell,dp); // Долг FillRowInTabl3(secTax,14,15,nTcol,71-14+8,CountDif,0,cell,dp); // Перечисленная в бюджет = удержанная if ( bSimplePayedTax ) FillRowInTabl3(secTax,13,14,nTcol,76-13+8,CountDif,0,cell,dp); FillRowInTabl3(sec3inc5,0,n3inc5row,n3inc5col,71,CountDif,0,cell,dp); // Доход > 5 млн. 15% FillRowInTabl3(secTax,16,18,nTcol,73-16,CountDif,0,cell,dp); // Сумма налога исчисленная и удержанная FillRowInTabl3(sec3div5,0,n3div5row,n3div5col,75,CountDif,0,cell,dp); // Дивиденды > 5 млн. 15% FillRowInTabl3(secTax,20,22,nTcol,77-20,CountDif,0,cell,dp); // Сумма налога исчисленная и удержанная /////////////// // Раздел 5 tWriteNumToCell("BO94",SumStV); // 86 tWriteNumToCell("BO95",SumImV); // 87 tWriteNumToCell("BO96",SumSocV); // 88 string cell2[5]; cell2[0] = "AE"; cell2[1] = "AW"; cell2[2] = "BO"; cell2[3] = "CG"; cell2[4] = "CY"; int EndColN45 = n45col-1; if ( bSimplePayedTax ) ++EndColN45; for (int i=0; i берем платежки не из таблицы, а получаем в момент печати var tmpDate=CreateObject("KDate");tmpDate.SetDateIII(1,mEND,atoi(aOrg[idxOrgGod])); FillNalRegPays(aNp[idxNpTN],tmpDate.GetStr(),""); //инициализируем список платежек } int PrRow4 = 162; // 154 double PaysForHalfYear[6]; // итоги за полугодие (по разным видам налога, т.е. по столбцам) for ( int ii=0; ii<6; ++ii ) PaysForHalfYear[ii]=0.; int cntAddRow4 = 0; if ( IsMoreThan5MillionIncomeTax ) { // 15% > 5млн - второе полугодие cntAddRow4 += FillRowInTablPays(PrRow4,idxTaxPays5m_15,7,12,PaysForHalfYear,aTaxMes); } PrRow4 -= 4; // 15% - второе полугодие cntAddRow4 += FillRowInTablPays(PrRow4,idxTaxPays_15,7,12,PaysForHalfYear,aTaxMes); // 35% - второе полугодие PrRow4 -= 4; cntAddRow4 += FillRowInTablPays(PrRow4,idxTaxPays_35,7,12,PaysForHalfYear,aTaxMes); // 30% - второе полугодие PrRow4 -= 4; cntAddRow4 += FillRowInTablPays(PrRow4,idxTaxPays_30,7,12,PaysForHalfYear,aTaxMes); // 13% - второе полугодие PrRow4 -= 4; cntAddRow4 += FillRowInTablPays(PrRow4,idxTaxPays_13,7,12,PaysForHalfYear,aTaxMes); // 9% - второе полугодие PrRow4 -= 4; cntAddRow4 += FillRowInTablPays(PrRow4,idxTaxPays_9,7,12,PaysForHalfYear,aTaxMes); // Итоги за второе полугодие PrRow4 = 166 + cntAddRow4; // 158 FillItogInTablPays(PrRow4,PaysForHalfYear); PrRow4 = 84; // 76 FillItogPaysInTablR3(PrRow4,PaysForHalfYear,2); for ( int ii=0; ii<6; ++ii ) PaysForHalfYear[ii]=0.; cntAddRow4=0; PrRow4 = 133; // 125 if ( IsMoreThan5MillionIncomeTax ) { // 15% > 5млн - первое полугодие cntAddRow4 += FillRowInTablPays(PrRow4,idxTaxPays5m_15,1,6,PaysForHalfYear,aTaxMes); } PrRow4 -= 4; // 15% - первое полугодие cntAddRow4 += FillRowInTablPays(PrRow4,idxTaxPays_15,1,6,PaysForHalfYear,aTaxMes); // 35% - первое полугодие PrRow4 -= 4; cntAddRow4 += FillRowInTablPays(PrRow4,idxTaxPays_35,1,6,PaysForHalfYear,aTaxMes); // 30% - первое полугодие PrRow4 -= 4; cntAddRow4 += FillRowInTablPays(PrRow4,idxTaxPays_30,1,6,PaysForHalfYear,aTaxMes); // 13% - первое полугодие PrRow4 -= 4; cntAddRow4 += FillRowInTablPays(PrRow4,idxTaxPays_13,1,6,PaysForHalfYear,aTaxMes); // 9% - первое полугодие PrRow4 -= 4; cntAddRow4 += FillRowInTablPays(PrRow4,idxTaxPays_9,1,6,PaysForHalfYear,aTaxMes); // Итоги за первое полугодие PrRow4=137+cntAddRow4; // 129 FillItogInTablPays(PrRow4,PaysForHalfYear); PrRow4 = 84; // 76 FillItogPaysInTablR3(PrRow4,PaysForHalfYear,1); } /////////////// // Раздел 4 ДАННЫЕ О ПОЛУЧЕННЫХ ДОХОДАХ И УДЕРЖАНИЯХ НДФЛ FillDataOnIncomeAndNDFL(aOrg,aNp,secTax); /////////////// // Раздел 3 (с добавлением строк) int PrRow = 26, AddRow = 1; int TotalAddRow=0; // суммы дохода по месяцам FillRowInTabl3(sec31,0,n31row,n31col,PrRow,CountDif,AddRow,cell,dp); if( dp>4 ) PrRow += dp+1; else PrRow += 5; TotalAddRow += AddRow; AddRow = 1; // Cтандартные налоговые вычеты FillRowInTabl3(sec34,0,n34row,n34col,PrRow,CountDif,AddRow,cell,dp); if( dp>4 ) PrRow += dp+1; else PrRow += 5; TotalAddRow += AddRow; AddRow = 1; // Налоговые вычеты фактически предоставленные FillRowInTabl3(sec34,0,n34row,n34col,PrRow,CountDif,AddRow,cell,dp); //стандартные FillRowInTabl3(sec32,0,n32row,n32col,PrRow+dp,CountDif,AddRow,cell,dp); //нестандарт. if( dp>4 ) PrRow += dp+1; else PrRow += 5; TotalAddRow += AddRow; AddRow = 1; // Имущественный вычет FillRowInTabl3(sec32i,0,n32irow,n32icol,PrRow,CountDif,AddRow,cell,dp); if( dp>4 ) PrRow += dp+1; else PrRow += 5; TotalAddRow += AddRow; AddRow = 1; // Социальный вычет FillRowInTabl3(sec32s,0,n32srow,n32scol,PrRow,CountDif,AddRow,cell,dp); TotalAddRow += AddRow; AddRow = 1; tWshCellSelect(1,1); return 0; } FillRowInTablPays(PrRow4,idxTaxPays,CalMBeg,CalMEnd,&Itog,&aTaxMes) { int cntAddRow=0; int cntUsedRow=0; string cell[6][3]; // 6 месяцев, дата, номер, сумма cell[0][0] = cell[0][2] ="S"; cell[0][1] = "AC"; cell[1][0] = cell[1][2] ="AM"; cell[1][1] = "AW"; cell[2][0] = cell[2][2] ="BG"; cell[2][1] = "BQ"; cell[3][0] = cell[3][2] ="CA"; cell[3][1] = "CK"; cell[4][0] = cell[4][2] ="CU"; cell[4][1] = "DE"; cell[5][0] = cell[5][2] ="DO"; cell[5][1] = "DY"; var ParPays = CreateObject("ParamFuncRW"); var ParOnePay = CreateObject("ParamFuncRW"); double ItogRow = 0; for (int CalM=CalMBeg; CalM<=CalMEnd; ++CalM) { int UsedRowInMonth=0; int idxM = CalM-CalMBeg; int Row = PrRow4; if ( bGetPaysFromTabl ) ParPays.IInitial(aTaxMes[idxTaxPays][idxM+CalMBeg-1],";",256); else { int taxAlg=GetAlgForTax(idxTaxPays); if( taxAlg<0 ) continue; ParPays.IInitial(NalRegPays(CalM,taxAlg),";",256); } for ( int i=0; i0.0001 ) // отрицательные выплаты тоже могут быть { if ( Row-PrRow4>=4+cntAddRow ) // на каждый тип налога в шаблоне 4 строчки (на 2 платежа) { tInsertRows(Row,2); tCopyRows(Row,2); tClearContents(Row,20,Row+1,166,0); cntAddRow += 2; } Itog[idxM] += Sum; ItogRow+=Sum; string ncell = cell[idxM][0]+to_string(Row); tWriteStringToCell(ncell,ParOnePay.Get(0)); ncell = cell[idxM][1]+to_string(Row); tWriteStringToCell(ncell,OemToAnsi(ParOnePay.Get(1))); ncell=cell[idxM][2]+to_string(++Row); tWriteNumToCell(ncell,Sum); ++Row; UsedRowInMonth+=2; } } if ( cntUsedRow0.0001 ) { string ncell="EI"+to_string(PrRow4); tWriteNumToCell(ncell,ItogRow); } if ( cntUsedRow<4 ) // удалим две лишних строчки, оставим только две исходных на один платеж { tDeleteRows(PrRow4+2,2); cntAddRow -= 2; } return cntAddRow; } FillItogInTablPays(PrRow4,&PaysForHalfYear) { string cell[6]; cell[0] = "S"; cell[1] = "AM"; cell[2] = "BG"; cell[3] = "CA"; cell[4] = "CU"; cell[5] = "DO"; for (int i=0; i<6; i++) { if ( PaysForHalfYear[i]>0.0001 ) { string ncell=cell[i]+to_string(PrRow4); tWriteNumToCell(ncell,PaysForHalfYear[i]); } } } FillItogPaysInTablR3(PrRow4,&PaysForHalfYear,cntHalfYear) { string cell[6]; if ( cntHalfYear==1 ) { cell[0] ="AK"; cell[1] ="AU"; cell[2] ="BE"; cell[3] ="BO"; cell[4] ="BY"; cell[5] ="CI"; } else { cell[0] ="CS"; cell[1] ="DC"; cell[2] ="DM"; cell[3] ="DW"; cell[4] ="EG"; cell[5] ="EQ"; } for (int i=0; i<6; i++) { if ( PaysForHalfYear[i]>0.0001 ) { string ncell=cell[i]+to_string(PrRow4); tWriteNumToCell(ncell,PaysForHalfYear[i]); } } } // Заполнение сумм 3 таблицы FillRowInTabl3(&sec3,&i1,&n3row,&n3col,&FirstRow,&CountDif,&FlCode,&cell,&dp) { string ncell = ""; char str[256]; int trow=0; for (int i=i1; i4 ) { trow = FirstRow+i; tInsertRows(trow,1); tCopyRow(trow); tClearContents(trow,20,trow,166,0); CountDif++; } FlCode++; // коды доходов-вычетов ncell=cell[0]+to_string(i+FirstRow); tWriteStringToCell(ncell,sec3[i][0]); // ncell=cell[0]+to_string(i+FirstRow+CountDif); // tWriteStringToCell(ncell,sec3[i][0]); } for (int j=1,jj=1; j eps ) { // сумма ncell=cell[jj]+to_string(i+FirstRow); tWriteNumToCell(ncell,atof(sec3[i][j])); } } else { // итоги за год if ( nabs(atof(sec3[i][j])) > eps ) { ncell=cell[jj]+to_string(i+FirstRow); tWriteNumToCell(ncell,atof(sec3[i][j])); } } } } return 0; } FillSectionRest(&sec36,&sec4,&sec5,&sec6,&secTax,&aTax,&aTaxMes,&aNp) // sec36,secTax - массивы для раздела 3 // sec4,sec5,sec6 - массивы для разделов 4, 5, 6 // aTax,aTaxMes,aNp - данные из таблицы (общие данные по налогу, данные по налогу по месяцам, // данные по налогоплательщику) { // инициализируем массивы for (int i=0; i=mEND ) continue; char str4[len]; if ( status != 2 ) sprintf(str4,"%s",aTaxMes[idxTaxPFLIST][i]); else sprintf(str4,"%s",aTaxMes[idxTaxRKLIST][i]); Trim(str4); char str5[len]; sprintf(str5,"%s",aTaxMes[idxTaxRKLIST][i]); Trim(str5); char buf41[len], buf42[len], buf43[len], buf44[len], buf45[len]; char buf51[len], buf52[len], buf53[len], buf54[len], buf55[len], buf56[len]; var lst = CreateObject("ParamFuncRW"); lst.IInitial1(to_string(str4),",",100); buf41 = lst.Get(0); Trim(buf41); // сумма дивидендов buf42 = lst.Get(5); Trim(buf42); // налог исчисленный buf43 = lst.Get(6); Trim(buf43); // налог удержанный buf44 = lst.Get(4); Trim(buf44); // облагаемая сумма Trim(buf45); // налог переданный на взыскание if ( !flgtax ) { buf42 = Trim(aTaxMes[idxTaxTAX07_C][i]); // налог исчисленный buf43 = Trim(aTaxMes[idxTaxTAX13_C][i]); // налог удержанный buf45 = Trim(aTaxMes[idxTaxVTAX_C][i]); // налог переданный на взыскание } lst.IInitial1(to_string(str5),",",100); buf51 = lst.Get(0); Trim(buf51); // сумма выгоды buf52 = lst.Get(1); Trim(buf52); // скидки buf53 = lst.Get(4); Trim(buf53); // облагаемая сумма buf54 = lst.Get(5); Trim(buf54); // налог исчисленный buf55 = lst.Get(6); Trim(buf55); // налог удержанный Trim(buf56); // налог переданный на взыскание if ( !flgtax ) { buf54 = Trim(aTaxMes[idxTaxTAX07_F][i]); // налог исчисленный buf55 = Trim(aTaxMes[idxTaxTAX13_F][i]); // налог удержанный buf56 = Trim(aTaxMes[idxTaxVTAX_F][i]); // налог переданный на взыскание } string eds4[5]; string eds5[6]; char tmp[20]; sprintf(tmp,"%15.2f", atof(buf41) - sum41 ); Trim(tmp); eds4[0] = tmp; // сумма дивидендов sprintf(tmp,"%15.0f", atof(buf42) - sum42 ); Trim(tmp); eds4[1] = tmp; // налог исчисленный sprintf(tmp,"%15.0f", atof(buf43) - sum43 ); Trim(tmp); eds4[2] = tmp; // налог удержанный sprintf(tmp,"%15.2f", atof(buf44) - sum44 ); Trim(tmp); eds4[3] = tmp; // облагаемая сумма sprintf(tmp,"%15.0f", atof(buf45) - sum45 ); Trim(tmp); eds4[4] = tmp; // налог переданный на взыскание sprintf(tmp,"%15.2f", atof(buf51) - sum51 ); Trim(tmp); eds5[0] = tmp; // сумма выгоды sprintf(tmp,"%15.2f", atof(buf52) - sum52 ); Trim(tmp); eds5[1] = tmp; // скидки sprintf(tmp,"%15.2f", atof(buf53) - sum53 ); Trim(tmp); if ( status != 2 ) eds5[2] = tmp; // облагаемая сумма sprintf(tmp,"%15.0f", atof(buf54) - sum54 ); Trim(tmp); eds5[3] = tmp; // налог исчисленный sprintf(tmp,"%15.0f", atof(buf55) - sum55 ); Trim(tmp); eds5[4] = tmp; // налог удержанный sprintf(tmp,"%15.0f", atof(buf56) - sum56 ); Trim(tmp); eds5[5] = tmp; // налог переданный на взыскание sum41 += atof(eds4[0]); // сумма дивидендов sum42 += atof(eds4[1]); // налог исчисленный sum43 += atof(eds4[2]); // налог удержанный sum44 += atof(eds4[3]); // облагаемая сумма sum45 += atof(eds4[4]); // налог переданный на взыскание sum51 += atof(eds5[0]); // сумма выгоды sum52 += atof(eds5[1]); // скидки sum53 += atof(eds5[2]); // облагаемая сумма sum54 += atof(eds5[3]); // налог исчисленный sum55 += atof(eds5[4]); // налог удержанный sum56 += atof(eds5[5]); // налог переданный на взыскание for (int j=0; j<3; j++) if ( nabs(atof(eds4[j])) > eps ) sec4[j][i] = eds4[j]; for (int j=0; j<5; j++) if ( nabs(atof(eds5[j])) > eps ) sec5[j][i] = eds5[j]; sec4[6][i] = eds4[4]; double dolg4 = atof(sec4[1][i]) - atof(sec4[2][i]) - atof(sec4[6][i]); double dlg4 = nabs(dolg4); if ( dlg4 > eps ) { sprintf(tmp,"%15.0f",dlg4); Trim(tmp); if ( dolg4 > 0 ) sec4[3][i] = tmp; // долг за налогоплательщиком else sec4[4][i] = tmp; // долг за налоговым агентом } if ( nabs(atof(eds4[3])) > eps ) sec4[5][i] = eds4[3]; // облагаемая сумма дивидендов sec5[7][i] = eds5[5]; double dolg5 = atof(sec5[3][i]) - atof(sec5[4][i]) - atof(sec5[7][i]); double dlg5 = nabs(dolg5); if ( dlg5 > eps ) { sprintf(tmp,"%15.0f",dlg5); Trim(tmp); if (dolg5>0) sec5[5][i] = tmp; else sec5[6][i] = tmp; } } // конец цикла по месяцам // заполним итоговый столбец string eds4[5]; string eds5[6]; char tmp[20]; sprintf(tmp,"%15.2f", sum41); Trim(tmp); eds4[0] = tmp; // сумма дивидендов sprintf(tmp,"%15.0f", sum42); Trim(tmp); eds4[1] = tmp; // налог исчисленный sprintf(tmp,"%15.0f", sum43); Trim(tmp); eds4[2] = tmp; // налог удержанный sprintf(tmp,"%15.2f", sum44); Trim(tmp); eds4[3] = tmp; // облагаемая сумма sprintf(tmp,"%15.0f", sum45); Trim(tmp); eds4[4] = tmp; // налог переданный на взыскание sprintf(tmp,"%15.2f", sum51); Trim(tmp); eds5[0] = tmp; // сумма выгоды sprintf(tmp,"%15.2f", sum52); Trim(tmp); eds5[1] = tmp; // скидки sprintf(tmp,"%15.2f", sum53); Trim(tmp); eds5[2] = tmp; // облагаемая сумма sprintf(tmp,"%15.0f", sum54); Trim(tmp); eds5[3] = tmp; // налог исчисленный sprintf(tmp,"%15.0f", sum55); Trim(tmp); eds5[4] = tmp; // налог удержанный sprintf(tmp,"%15.0f", sum56); Trim(tmp); eds5[5] = tmp; // налог переданный на взыскание for (int i=0; i<3; i++) if ( nabs(atof(eds4[i])) > eps ) sec4[i][12] = eds4[i]; for (int i=0; i<5; i++) if ( nabs(atof(eds5[i])) > eps ) sec5[i][12] = eds5[i]; sec4[6][12] = eds4[4]; // налог переданный на взыскание 9% double dolg4 = atof(sec4[1][12]) - atof(sec4[2][12]) - atof(sec4[6][12]); // исчислено - удержано - взыскание double dlg4 = nabs(dolg4); if ( dlg4 > eps ) { sprintf(tmp,"%15.0f",dlg4); Trim(tmp); if (dolg4>0) sec4[3][12] = tmp; // долг за плательщиком else sec4[4][12] = tmp; // долг за агентом } if ( nabs(atof(eds4[3])) > eps ) sec4[5][12] = eds4[3]; // облагаемая сумма // если нерезидент, то таблицу по дивидендам не заполняем // if (status==2) for (int i=0; i eps ) { sprintf(tmp,"%15.0f",dlg5); Trim(tmp); if (dolg5>0) sec5[5][12] = tmp; // долг за плательщиком else sec5[6][12] = tmp; // долг за агентом } // заполняем sec6 ( общая сумма налога по итогам года ) // по ставке 9% sec6[0][0]=sec4[1][12]; // начислено sec6[0][1]=sec4[2][12]; // удержано sec6[0][2]=sec4[6][12]; // передано на взыскание sec6[0][5]=sec4[3][12]; // долг за налогоплательщиком sec6[0][6]=sec4[4][12]; // долг за налоговым агентом // по ставке 13% или 30% int n=1; if (status==2) n=2; sec6[n][0]=secTax[0][13]; // начислено sec6[n][1]=secTax[1][13]; // удержано sec6[n][2]=sec36[0][13]; // передано на взыскание if ( Recalc ) { double sum = atof(aTax[idxTaxLTAX]); if ( nabs(sum) > eps ) { if ( sum < 0 ) { sprintf(tmp,"%15.0f",-sum); Trim(tmp); sec6[n][3] = tmp; } if ( sum > 0 ) { sprintf(tmp,"%15.0f",sum); Trim(tmp); sec6[n][4] = tmp; } } } sec6[n][5] = secTax[2][13]; // долг за налогоплательщиком sec6[n][6] = secTax[3][13]; // долг за налоговым агентом // по ставке 35% sec6[3][0] = sec5[3][12]; // начислено sec6[3][1] = sec5[4][12]; // удержано sec6[3][2] = sec5[7][12]; // передано на взыскание sec6[3][5] = sec5[5][12]; // долг за налогоплательщиком sec6[3][6] = sec5[6][12]; // долг за налоговым агентом // итоговая строка for (int i=0; i eps ) { sprintf(tmp,"%15.0f",sum); Trim(tmp); sec6[4][i] = tmp; } } } FillSection3Dop(&sec3_9,&sec3_35,&sec4,&sec5,&aTaxMes) // Заполнение облагаемых сумм для выгоды и дивидентов { // 9% по месяцам (облагаемая сумма) double sum_pol=0.; for (int i=0; i eps ) { char tmp[20]; sprintf(tmp,"%15.2f", sum_pol); Trim(tmp); sec3_9[0][14] = tmp; } // 35% по месяцам (облагаемая сумма) sum_pol=0.; for (int i=0; i eps ) { char tmp[20]; sprintf(tmp,"%15.2f", sum_pol); Trim(tmp); sec3_35[0][14] = tmp; } if ( IsMoreThan5MillionIncomeTax ) Correct5mln(sec3_9,aTaxMes,idxDiv5); // Корректировка для случая > 5 млн Дивиденды return 0; } Correct5mln(&sec,&aTaxMes,incTabNumber) { // Корректировка для случая > 5 млн double sum5m = 0.0; double sumOld = 0.0; for (int i = 1; i <= 12; i++) { if ( i > mEND ) continue; double sumNew = atof(aTaxMes[incTabNumber][i-1]); double sum = sumNew - sumOld; if ( nabs(sum) > eps ) { char tmp[20]; sprintf(tmp,"%15.2f", atof(sec[0][i]) - sum); Trim(tmp); sec[0][i] = tmp; sum5m += sum; } sumOld = sumNew; } if ( nabs(sum5m) ) { char tmp[20]; sprintf(tmp,"%15.2f", atof(sec[0][13]) - sum5m); Trim(tmp); sec[0][13] = tmp; } } FillSection3(&sec30,&sec31,&sec3_9,&sec3_35,&sec32,&sec32i,&sec32s,&sec33,&sec34,&sec35,&sec36,&sec3inc5,&sec3div5,&sec7, &secTax,&aTax,&aTaxMes,&aNp) // sec30,sec31,sec32,sec33,sec34,sec35,sec36,sec3inc5,sec3div5secTax - массивы для раздела 3 // sec7 - массив для раздела 7 // aTax,aTaxMes,aNp - данные из таблицы (общие данные по налогу, данные по налогу по месяцам, // данные по налогоплательщику) { // инициализируем массивы for (int i=0; i<3; i++) sec30[i]=""; for (int i=0; i=mEND ) continue; string incom=aTaxMes[idxTaxI][i]; if (status==2) incom=aTaxMes[idxTaxINCODNR][i]; char str[len]; sprintf(str,"%s",incom); Trim(str); var lst = CreateObject("ParamFuncRW"); lst.IInitial1(to_string(str),";",100); int celem = lst.Count(); // положительное значение celem-1 соответствует количеству групп // код_дохода,сумма_дохода,код_скидки,сумма_скидки var lst1 = CreateObject("ParamFuncRW"); // цикл по группам доход-скидка for (int j=0; j=0 ; j-- ) { var List1 = CreateObject("ParamFuncRW"); List1.IInitial(List.Get(j),",",2); int codeDed = atoi(List1.Get(0)); ars[0] = List1.Get(0); double sumDed = atof(List1.Get(1)); // социальные вычеты if ( sumDed > eps ) { if ( codeDed == 320 || codeDed == 321 || codeDed == 324 || codeDed == 325 || codeDed == 326 || codeDed == 327 || codeDed == 328 ) { sprintf(ts,"%14.2f",sumDed); Trim(ts); ars[1] = to_string(ts); if (WriteSection(sec32s,n32srow,ars,1,i,-1)==-1) return -1; } else // имущественные вычеты if ( codeDed == 311 || codeDed == 312 ) { sprintf(ts,"%14.2f",sumDed); Trim(ts); ars[1] = to_string(ts); if (WriteSection(sec32i,n32irow,ars,1,i,-1)==-1) return -1; } } } /////////////////////////////////////////////////////////////////////////////////////////// // заполняем последний столбец sec7 ( доходы, обагаемые налоговыми органами ) for (int i=0; i eps ) { char tmp[20]; sprintf(tmp,"%15.2f",sum); Trim(tmp); sec7[i][n7col-1]=tmp; } } // заполняем sec34 sprintf(str,"%s",aTaxMes[idxTaxDED][i]); Trim(str); lst.IInitial1(to_string(str),";",100); celem=lst.Count(); // положительное значение celem-1 соответствует количеству групп // код_вычета,сумма_вычета // цикл по группам вычет-сумма for (int j=0; j=101 && cod<200 ) WriteSection(sec34,n34row,eds,1,i,-1); } } ////////////////////////////////////////////////////////////////////////////////////////////////// // заполняем secTax ( налоги ) if ( !flgtax ) { // налоги: по 1 таблице: строки 0-начислено, 1-удержано, 2-долг плательщиком, 3-долг за агентом // по 2 таблице: строки 4-начислено, 5-удержано, 6-долг плательщиком, 7-долг за агентом // по 3 таблице: строки 8-начислено, 9-удержано,10-долг плательщиком,11-долг за агентом // итого: 12-начислено,13-удержано,14-долг плательщиком,15-долг за агентом // 13% / 30% int sum = atoi(aTaxMes[idxTaxTAX07_N][i]); // исчисленно 13% if ( i && !bCumulativeTax ) sum -= atoi(aTaxMes[idxTaxTAX07_N][i-1]); secTax[0][i+1] = to_string(sum); sum = atoi(aTaxMes[idxTaxTAX13_N][i]); if ( i && !bCumulativeTax ) sum -= atoi(aTaxMes[idxTaxTAX13_N][i-1]);; if ( Recalc ) { int rec = atof(aTaxMes[idxTaxFUTTAX][i]); if ( i && !bCumulativeTax ) rec -= atof(aTaxMes[idxTaxFUTTAX][i-1]); sum -= rec; } secTax[1][i+1] = sum; // удержано 13% sum = atoi(aTaxMes[idxTaxTAXVZ][i]); if ( i && !bCumulativeTax ) sum -= atoi(aTaxMes[idxTaxTAXVZ][i-1]); sum = atoi(secTax[0][i+1]) - (atoi(secTax[1][i+1]) + sum); if ( sum > 0 ) secTax[2][i+1] = sum; // задолженность if ( sum < 0 ) secTax[3][i+1] = -sum; // по налогу 13% // 35% sum = atoi(aTaxMes[idxTaxTAX07_F][i]); if ( i && !bCumulativeTax ) sum -= atoi(aTaxMes[idxTaxTAX07_F][i-1]); secTax[4][i+1] = to_string(sum); // исчисленно 35% sum = atoi(aTaxMes[idxTaxTAX13_F][i]); if ( i && !bCumulativeTax ) sum -= atoi(aTaxMes[idxTaxTAX13_F][i-1]); if ( Recalc ) { int rec = atof(aTaxMes[idxTaxFTAX_F][i]); if ( i && !bCumulativeTax ) rec -= atof(aTaxMes[idxTaxFTAX_F][i-1]); sum -= rec; } secTax[5][i+1] = sum; // удержано 35% sum = atoi(aTaxMes[idxTaxVTAX_F][i]); if ( i && !bCumulativeTax ) sum -= atoi(aTaxMes[idxTaxVTAX_F][i-1]); sum = atoi(secTax[4][i+1]) - (atoi(secTax[5][i+1]) + sum); if ( Recalc ) { int rec = atof(aTaxMes[idxTaxFTAX_F][i]); if ( i && !bCumulativeTax ) rec = atof(aTaxMes[idxTaxFTAX_F][i-1]); sum += rec; } if ( sum > 0 ) secTax[6][i+1] = sum; // задолженность if ( sum < 0 ) secTax[7][i+1] = -sum; // по налогу 35% // 9% sum = atoi(aTaxMes[idxTaxTAX07_C][i]); if ( i && !bCumulativeTax ) sum -= atoi(aTaxMes[idxTaxTAX07_C][i-1]); secTax[8][i+1] = to_string(sum); // исчисленно 9% sum = atoi(aTaxMes[idxTaxTAX13_C][i]); if ( i && !bCumulativeTax ) sum -= atoi(aTaxMes[idxTaxTAX13_C][i-1]); if ( Recalc ) { int rec = atof(aTaxMes[idxTaxFTAX_C][i]); if ( i && !bCumulativeTax ) rec -= atof(aTaxMes[idxTaxFTAX_C][i-1]); sum -= rec; } secTax[9][i+1] = sum; // удержано 9% sum = aTaxMes[idxTaxVTAX_C][i]; if ( i && !bCumulativeTax ) sum -= aTaxMes[idxTaxVTAX_C][i-1]; sum = atoi(secTax[8][i+1]) - (atoi(secTax[9][i+1]) + atoi(sum)); if ( Recalc ) { int rec = atof(aTaxMes[idxTaxFTAX_C][i]); if ( i && !bCumulativeTax ) rec = atof(aTaxMes[idxTaxFTAX_C][i-1]); sum += rec; } if ( sum > 0 ) secTax[10][i+1] = sum; // задолженность if ( sum < 0 ) secTax[11][i+1] = -sum; // по налогу 9% if ( IsMoreThan5MillionIncomeTax ) { CalcSecTax5mln(idxPrim5TaxIsch,secTax,aTaxMes,16,i); CalcSecTax5mln(idxPrim5TaxUder,secTax,aTaxMes,17,i); CalcSecTax5mln(idxDiv5TaxIsch,secTax,aTaxMes,20,i); CalcSecTax5mln(idxDiv5TaxUder,secTax,aTaxMes,21,i); } // общие суммы налога secTax[12][i+1] = to_string(atoi(secTax[0][i+1]) + atoi(secTax[4][i+1]) + atoi(secTax[8][i+1]) + atoi(secTax[16][i+1]) + atoi(secTax[20][i+1]) ); // исчисленно secTax[13][i+1] = to_string(atoi(secTax[1][i+1]) + atoi(secTax[5][i+1]) + atoi(secTax[9][i+1]) + atoi(secTax[17][i+1]) + atoi(secTax[21][i+1]) ); // удержано secTax[14][i+1] = to_string(atoi(secTax[2][i+1]) + atoi(secTax[6][i+1]) + atoi(secTax[10][i+1])); secTax[15][i+1] = to_string(atoi(secTax[3][i+1]) + atoi(secTax[7][i+1]) + atoi(secTax[11][i+1])); } else { sprintf(str,"%s",aTaxMes[idxTaxTAXRF][i]); Trim(str); char str1[500]; var lst = CreateObject("ParamFuncRW"); lst.IInitial1(to_string(str),";",200); str1 = lst.Get(0); Trim(str1); var lst1 = CreateObject("ParamFuncRW"); lst1.IInitial1(to_string(str1),",",50); for (int j=0; j<12; j++) { char str2[100]; str2 = lst1.Get(j); Trim(str2); string eds=str2; if ( strcmp(eds,"0.00") || j==2 || j==3 ) { int sum=atof(eds); switch (j) { case 0: secTax[0][i+1] =sum; break; case 1: { if ( Recalc ) { int rec = atof(aTaxMes[idxTaxFUTTAX][i]); sum -= rec; } if ( sum ) secTax[1][i+1] = sum; break; } case 2: { if ( Recalc ) { int rec = atof(aTaxMes[idxTaxFUTTAX][i]); sum += rec; } if ( sum > 0 ) secTax[2][i+1] = sum; if ( sum < 0 ) secTax[3][i+1] = -sum; break; } case 3: secTax[4][i+1] = sum; break; case 4: secTax[5][i+1] = sum; break; case 5: if ( sum >0 ) secTax[6][i+1] = sum; else secTax[7][i+1] = -sum; break; case 6: secTax[8][i+1] = sum; break; case 7: secTax[9][i+1] = sum; break; case 8: if ( sum > 0 ) secTax[10][i+1] = sum; else secTax[11][i+1] = -sum; break; case 9: secTax[12][i+1] = sum; break; case 10: secTax[13][i+1] = sum; break; case 11: if ( sum > 0 ) secTax[14][i+1] = sum; else secTax[15][i+1] = -sum; break; } } } } ////////////////////////////////////////////////////////////////////////////////////////////////// // заполняем sec36 ( взыскание и возврат ) sprintf(str,"%s",aTaxMes[idxTaxTAXVZ][i]); Trim(str); string eds=str; if ( strcmp(eds,"0.00") ) { int sum = atof(eds); if ( sum > 0 ) sec36[0][i+1] = sum; else sec36[1][i+1] = -sum; } ////////////////////////////////////////////////////////////////////////////////////////////////// // заполняем sec3_9 и sec3_35 ( налоговая база по 9% и 35% ) sprintf(str,"%s",aTaxMes[idxTaxI_9][i]); Trim(str); sec3_9[1][i+1] = atof(str); sprintf(str,"%s",aTaxMes[idxTaxI_35][i]); Trim(str); sec3_35[1][i+1] = atof(str); if ( IsMoreThan5MillionIncomeTax ) { // > 5 млн. double sumIncNew = atof(aTaxMes[idxPrim5][i]); sprintf(ts,"%14.2f",sumIncNew); Trim(ts); sec3inc5[1][i+1] = ts; double sumIncMonth = sumIncNew - atof(sec3inc5[1][i]); sprintf(ts,"%14.2f",sumIncMonth); Trim(ts); sec3inc5[0][i+1] = ts; sec3inc5[0][13] = atof(sec3inc5[0][13]) + sumIncMonth; // PRIM5 за год sec3inc5[1][13] = sec3inc5[0][13]; double sumDivNew = atof(aTaxMes[idxDiv5][i]); sprintf(ts,"%14.2f",sumDivNew); Trim(ts); sec3div5[1][i+1] = ts; double sumDivMonth = sumDivNew - atof(sec3div5[1][i]); sprintf(ts,"%14.2f",sumDivMonth); Trim(ts); sec3div5[0][i+1] = ts; sec3div5[0][13] = atof(sec3div5[0][13]) + sumDivMonth; // DIV5 за год sec3div5[1][13] = sec3div5[0][13]; } } // конец цикла по i (по месяцам) // заполняем последний столбец secTax ( налоги ) for (int j=0; j6 ) secTax[j][14] = secTax[j][6]; else secTax[j][14] = secTax[j][mEND]; } else { int sum = 0, sum6=0; for ( int i=1; i<=mEND; ++i ) { int s = atoi(secTax[j][i]); sum += s; if ( i<=6 ) sum6 += s; } secTax[j][13] = to_string(sum); if ( mEND>6 ) secTax[j][14] = sum6; else secTax[j][14] = secTax[j][13]; } } // заполняем последний столбец sec36 ( взыскание и возврат ) for (int j=0; j6 ) sec3_9[j][14] = sec3_9[j][6]; else sec3_9[j][14] = sec3_9[j][mEND]; } for (int j=0; j6 ) sec3_35[j][14] = sec3_35[j][6]; else sec3_35[j][14] = sec3_35[j][mEND]; } FinalColumn(sec31,n31row, n31col); // заполняем итоговый столбец sec31 FinalColumn(sec32,n32row, n32col); // заполняем итоговый столбец sec32 FinalColumn(sec32i,n32irow,n32icol);// заполняем итоговый столбец sec32i FinalColumn(sec32s,n32srow,n32scol);// заполняем итоговый столбец sec32i FinalColumn(sec34,n34row-1,n34col); // заполняем итоговый столбец sec34 // заполняем sec33 (общая сумма доходов за минусом вычетов) for (int i=1; i eps ) { char tmp[20]; sprintf(tmp,"%15.2f", sum); Trim(tmp); sec33[0][i] = tmp; } } for (int i=1; i eps ) { char tmp[20]; sprintf(tmp,"%15.2f", atof(sec33[0][i]) - sum); Trim(tmp); sec33[0][i] = tmp; } } for (int i=1; i eps ) { char tmp[20]; sprintf(tmp,"%15.2f", atof(sec33[0][i]) - sum); Trim(tmp); sec33[0][i] = tmp; } } for (int i=1; i eps ) { char tmp[20]; sprintf(tmp,"%15.2f", atof(sec33[0][i]) - sum); Trim(tmp); sec33[0][i] = tmp; } } for (int i=1; i eps ) { char tmp[20]; sprintf(tmp,"%15.2f", atof(sec33[0][i]) - sum); Trim(tmp); sec33[0][i] = tmp; } } if ( IsMoreThan5MillionIncomeTax ) Correct5mln(sec33,aTaxMes,idxPrim5); // Корректировка для случая > 5 млн double sum=0.; double sum_pol=0.; for (int i=1; imEND ) break; sum += atof(sec33[0][i]); if ( i<=mEND && i<=6 ) sum_pol += atof(sec33[0][i]); if ( nabs(sum) > eps ) { char tmp[20]; sprintf(tmp,"%15.2f", sum); Trim(tmp); sec33[1][i] = tmp; } } sec33[1][13]=sec33[0][13]; if ( nabs(sum_pol) > eps ) { char tmp[20]; sprintf(tmp,"%15.2f", sum_pol); Trim(tmp); sec33[1][14] = tmp; sec33[0][14] = tmp; } for (int i=0; i eps ) sec30[2] = tmp; sprintf(str,"%s",aTax[idxTaxTAXLAST]); lst.IInitial1(to_string(str),",",50); str1 = lst.Get(11); double DolgLY=atof(str1); if ( DolgLY > eps ) { sprintf(tmp,"%15.0f", DolgLY); Trim(tmp); sec30[0] = tmp; } if ( DolgLY < -eps ) { sprintf(tmp,"%15.0f",-DolgLY); Trim(tmp); sec30[1] = tmp; } return 0; } CalcSecTax5mln(numberFld,&secTax,&aTaxMes,iSecTax,i) { char str[len]; double sumNew = atof(aTaxMes[numberFld][i]); double sumMonth = sumNew - atof(secTax[iSecTax][13]); sprintf(str,"%14.2f",sumMonth); Trim(str); secTax[iSecTax][i+1] = str; secTax[iSecTax][13] = atof(secTax[iSecTax][13]) + sumMonth; } FillSection45(&sec31,&sec33,&sec3_9,&sec3_35,&sec3inc5,&sec3div5,&sec4,&sec5,&secTax,&aNp,&sec45) // Раздел 4. ОБЩИЙ РАСЧЕТ НАЛОГОВЫХ ОБЯЗАТЕЛЬСТВ ПО НДФЛ ЗА НАЛОГОВЫЙ ПЕРИОД { for (int i=0; i eps ) { char tmp[20]; sprintf(tmp,"%15.2f",sum); Trim(tmp); sec[i][ncol-1] = tmp; } if ( nabs(sum_pol) > eps ) { char tmp[20]; sprintf(tmp,"%15.2f",sum_pol); Trim(tmp); sec[i][ncol] = tmp; } } return 0; } WriteSection(&sec,nrow,&eds,n,i,col) // sec - массив // nrow - число строк в массиве // eds - массив с промежуточными данными // n - индекс для eds // i - месяц (с 0) // col - номер строки, если номер заранее не известен, col равен -1 { if ( col == -1 ) { // ищем строку с соответствующим кодом for (int k=0; k=mEND ) continue; aTaxMes[idxTaxDED ][i] = CTabl.Text(msFld[idxTaxDED ][i],zap); Trim(aTaxMes[idxTaxDED ][i]); aTaxMes[idxTaxI ][i] = CTabl.Text(msFld[idxTaxI ][i],zap); Trim(aTaxMes[idxTaxI ][i]); aTaxMes[idxTaxDI ][i] = CTabl.Text(msFld[idxTaxDI ][i],zap); Trim(aTaxMes[idxTaxDI ][i]); aTaxMes[idxTaxPRLIST ][i] = CTabl.Text(msFld[idxTaxPRLIST ][i],zap); Trim(aTaxMes[idxTaxPRLIST ][i]); aTaxMes[idxTaxRKLIST ][i] = CTabl.Text(msFld[idxTaxRKLIST ][i],zap); Trim(aTaxMes[idxTaxRKLIST ][i]); aTaxMes[idxTaxPFLIST ][i] = CTabl.Text(msFld[idxTaxPFLIST ][i],zap); Trim(aTaxMes[idxTaxPFLIST ][i]); aTaxMes[idxTaxFLLIST ][i] = CTabl.Text(msFld[idxTaxFLLIST ][i],zap); Trim(aTaxMes[idxTaxFLLIST ][i]); aTaxMes[idxTaxINCODNR ][i] = CTabl.Text(msFld[idxTaxINCODNR ][i],zap); Trim(aTaxMes[idxTaxINCODNR ][i]); aTaxMes[idxTaxINCODNRD][i] = CTabl.Text(msFld[idxTaxINCODNRD][i],zap); Trim(aTaxMes[idxTaxINCODNRD][i]); aTaxMes[idxTaxTAXRF ][i] = CTabl.Text(msFld[idxTaxTAXRF ][i],zap); Trim(aTaxMes[idxTaxTAXRF ][i]); aTaxMes[idxTaxTAXVZ ][i] = CTabl.Text(msFld[idxTaxTAXVZ ][i],zap); Trim(aTaxMes[idxTaxTAXVZ ][i]); aTaxMes[idxTaxRECK ][i] = CTabl.Text(msFld[idxTaxRECK ][i],zap); Trim(aTaxMes[idxTaxRECK ][i]); aTaxMes[idxTaxFUTTAX ][i] = CTabl.Text(msFld[idxTaxFUTTAX ][i],zap); Trim(aTaxMes[idxTaxFUTTAX ][i]); aTaxMes[idxTaxDEDW ][i] = CTabl.Text(msFld[idxTaxDEDW ][i],zap); Trim(aTaxMes[idxTaxDEDW ][i]); aTaxMes[idxTaxTAX07_N ][i] = CTabl.Text(msFld[idxTaxTAX07_N ][i],zap); Trim(aTaxMes[idxTaxTAX07_N ][i]); aTaxMes[idxTaxTAX07_C ][i] = CTabl.Text(msFld[idxTaxTAX07_C ][i],zap); Trim(aTaxMes[idxTaxTAX07_C ][i]); aTaxMes[idxTaxTAX07_F ][i] = CTabl.Text(msFld[idxTaxTAX07_F ][i],zap); Trim(aTaxMes[idxTaxTAX07_F ][i]); aTaxMes[idxTaxTAX13_N ][i] = CTabl.Text(msFld[idxTaxTAX13_N ][i],zap); Trim(aTaxMes[idxTaxTAX13_N ][i]); aTaxMes[idxTaxTAX13_C ][i] = CTabl.Text(msFld[idxTaxTAX13_C ][i],zap); Trim(aTaxMes[idxTaxTAX13_C ][i]); aTaxMes[idxTaxTAX13_F ][i] = CTabl.Text(msFld[idxTaxTAX13_F ][i],zap); Trim(aTaxMes[idxTaxTAX13_F ][i]); aTaxMes[idxTaxFTAX_C ][i] = CTabl.Text(msFld[idxTaxFTAX_C ][i],zap); Trim(aTaxMes[idxTaxFTAX_C ][i]); aTaxMes[idxTaxFTAX_F ][i] = CTabl.Text(msFld[idxTaxFTAX_F ][i],zap); Trim(aTaxMes[idxTaxFTAX_F ][i]); aTaxMes[idxTaxVTAX_C ][i] = CTabl.Text(msFld[idxTaxVTAX_C ][i],zap); Trim(aTaxMes[idxTaxVTAX_C ][i]); aTaxMes[idxTaxVTAX_F ][i] = CTabl.Text(msFld[idxTaxVTAX_F ][i],zap); Trim(aTaxMes[idxTaxVTAX_F ][i]); aTaxMes[idxTaxI_9 ][i] = CTabl.Text(msFld[idxTaxI_9 ][i],zap); Trim(aTaxMes[idxTaxI_9 ][i]); aTaxMes[idxTaxI_35 ][i] = CTabl.Text(msFld[idxTaxI_35 ][i],zap); Trim(aTaxMes[idxTaxI_35 ][i]); aTaxMes[idxTaxPays_13 ][i] = CTabl.Text(msFld[idxTaxPays_13 ][i],zap); aTaxMes[idxTaxPays_9 ][i] = CTabl.Text(msFld[idxTaxPays_9 ][i],zap); aTaxMes[idxTaxPays_30 ][i] = CTabl.Text(msFld[idxTaxPays_30 ][i],zap); aTaxMes[idxTaxPays_35 ][i] = CTabl.Text(msFld[idxTaxPays_35 ][i],zap); if ( msFld[idxTaxPays_15][i] != -1 ) aTaxMes[idxTaxPays_15][i] = CTabl.Text(msFld[idxTaxPays_15][i],zap); else aTaxMes[idxTaxPays_15][i] = to_string(""); if ( IsMoreThan5MillionIncomeTax ) { aTaxMes[idxPrim5 ][i] = CTabl.Text(msFld[idxPrim5 ][i],zap); Trim(aTaxMes[idxPrim5 ][i]); aTaxMes[idxPrim5TaxIsch][i] = CTabl.Text(msFld[idxPrim5TaxIsch][i],zap); Trim(aTaxMes[idxPrim5TaxIsch][i]); aTaxMes[idxPrim5TaxUder][i] = CTabl.Text(msFld[idxPrim5TaxUder][i],zap); Trim(aTaxMes[idxPrim5TaxUder][i]); aTaxMes[idxDiv5 ][i] = CTabl.Text(msFld[idxDiv5 ][i],zap); Trim(aTaxMes[idxDiv5 ][i]); aTaxMes[idxDiv5TaxIsch][i] = CTabl.Text(msFld[idxDiv5TaxIsch][i],zap); Trim(aTaxMes[idxDiv5TaxIsch][i]); aTaxMes[idxDiv5TaxUder][i] = CTabl.Text(msFld[idxDiv5TaxUder][i],zap); Trim(aTaxMes[idxDiv5TaxUder][i]); } } aTax[idxTaxTAX_FREE] = CTabl.Text(txFld[idxTaxTAX_FREE],zap); Trim(aTax[idxTaxTAX_FREE]); aTax[idxTaxMONTHINC] = CTabl.Text(txFld[idxTaxMONTHINC],zap); Trim(aTax[idxTaxMONTHINC]); aTax[idxTaxINCCODE ] = CTabl.Text(txFld[idxTaxINCCODE ],zap); Trim(aTax[idxTaxINCCODE ]); aTax[idxTaxNEDV ] = CTabl.Text(txFld[idxTaxNEDV ],zap); Trim(aTax[idxTaxNEDV ]); aTax[idxTaxSNEDV ] = CTabl.Text(txFld[idxTaxSNEDV ],zap); Trim(aTax[idxTaxSNEDV ]); aTax[idxTaxINCIST ] = CTabl.Text(txFld[idxTaxINCIST ],zap); Trim(aTax[idxTaxINCIST ]); aTax[idxTaxTAXLAST ] = CTabl.Text(txFld[idxTaxTAXLAST ],zap); Trim(aTax[idxTaxTAXLAST ]); aTax[idxTaxFTAX ] = CTabl.Text(txFld[idxTaxFTAX ],zap); Trim(aTax[idxTaxFTAX ]); aTax[idxTaxLTAX ] = CTabl.Text(txFld[idxTaxLTAX ],zap); Trim(aTax[idxTaxLTAX ]); return 0; } FillFldOrg() { orgFld[idxOrgGod] = CTabl.Find_Name_Fld("YEAR"); orgFld[idxOrgBEG] = CTabl.Find_Name_Fld("BEG"); orgFld[idxOrgEND] = CTabl.Find_Name_Fld("END"); } FillFld() { npFld[idxNpTN] = CTabl.Find_Name_Fld("C_FIO"); npFld[idxNpFam ] = CTabl.Find_Name_Fld("F"); npFld[idxNpName] = CTabl.Find_Name_Fld("I"); npFld[idxNpOtch] = CTabl.Find_Name_Fld("O"); npFld[idxNpInn ] = CTabl.Find_Name_Fld("INNFL"); npFld[idxNpPF ] = CTabl.Find_Name_Fld("FCstrah_n"); npFld[idxNpDocVid ] = CTabl.Find_Name_Fld("NAZ_PS"); npFld[idxNpCodDok ] = CTabl.Find_Name_Fld("DOC_CODE"); npFld[idxNpSerDok ] = CTabl.Find_Name_Fld("SER_PS"); npFld[idxNpDocNum ] = CTabl.Find_Name_Fld("NOM_PS"); npFld[idxNpAdrCountry] = CTabl.Find_Name_Fld("COUNTRY"); npFld[idxNpAdr ] = CTabl.Find_Name_Fld("ADDRESS"); npFld[idxNpStatus ] = CTabl.Find_Name_Fld("STATUS"); npFld[idxNpStdNalDis ] = CTabl.Find_Name_Fld("STDDED"); npFld[idxNpCitizen ] = CTabl.Find_Name_Fld("CITIZEN"); npFld[idxNpBirthday ] = CTabl.Find_Name_Fld("B_DATE"); npFld[idxNOTIFN ] = CTabl.Find_Name_Fld("notifn"); npFld[idxNOTIFS ] = CTabl.Find_Name_Fld("notifs"); txFld[idxTaxPERIOD ] = CTabl.Find_Name_Fld("PERIOD"); txFld[idxTaxTAX_FREE] = CTabl.Find_Name_Fld("TAX_FREE"); txFld[idxTaxMONTHINC] = CTabl.Find_Name_Fld("MONTHINC"); txFld[idxTaxINCCODE ] = CTabl.Find_Name_Fld("INCCODE"); txFld[idxTaxNEDV ] = CTabl.Find_Name_Fld("NEDV"); txFld[idxTaxSNEDV ] = CTabl.Find_Name_Fld("SNEDV"); txFld[idxTaxINCIST ] = CTabl.Find_Name_Fld("INCIST"); txFld[idxTaxTAXLAST ] = CTabl.Find_Name_Fld("TAXLAST"); txFld[idxTaxFTAX ] = CTabl.Find_Name_Fld("FTAX"); txFld[idxTaxLTAX ] = CTabl.Find_Name_Fld("LTAX"); string nc[nTaxMes]; for (int i=0; i<12; i++) { if ( i>=mEND ) continue; char mes[5]; sprintf(mes,"%02d",i+1); nc[idxTaxDED ] = "DED" + mes; nc[idxTaxI ] = "I" + mes; nc[idxTaxDI ] = "DI" + mes; nc[idxTaxPRLIST ] = "PRLIST" + mes; nc[idxTaxRKLIST ] = "RKLIST" + mes; nc[idxTaxPFLIST ] = "PFLIST" + mes; nc[idxTaxFLLIST ] = "FLLIST" + mes; nc[idxTaxINCODNR ] = "INCODNR" + mes; nc[idxTaxINCODNRD ] = "INCODNRD" + mes; nc[idxTaxTAXRF ] = "TAXRF" + mes; nc[idxTaxTAXVZ ] = "TAXVZ" + mes; nc[idxTaxRECK ] = "RECK" + mes; nc[idxTaxFUTTAX ] = "FUTTAX" + mes; nc[idxTaxDEDW ] = "DEDW" + mes; nc[idxTaxTAX07_N ] = "TAX07_N" + mes; nc[idxTaxTAX07_C ] = "TAX07_C" + mes; nc[idxTaxTAX07_F ] = "TAX07_F" + mes; nc[idxTaxTAX13_N ] = "TAX13_N" + mes; nc[idxTaxTAX13_C ] = "TAX13_C" + mes; nc[idxTaxTAX13_F ] = "TAX13_F" + mes; nc[idxTaxFTAX_C ] = "FTAX_C" + mes; nc[idxTaxFTAX_F ] = "FTAX_F" + mes; nc[idxTaxVTAX_C ] = "VTAX_C" + mes; nc[idxTaxVTAX_F ] = "VTAX_F" + mes; nc[idxTaxI_9 ] = "I_9_" + mes; nc[idxTaxI_35 ] = "I_35_" + mes; nc[idxTaxPays_13 ] = "PAYT13_" + mes; nc[idxTaxPays_9 ] = "PAYT9_" + mes; nc[idxTaxPays_30 ] = "PAYT30_" + mes; nc[idxTaxPays_35 ] = "PAYT35_" + mes; nc[idxTaxPays_15 ] = "PAYT15_" + mes; nc[idxTaxPays5m_15] = "PT5m15_" + mes; nc[idxPrim5] = "PRIM5" + mes; nc[idxPrim5TaxIsch] = "PRIM5TF" + mes; nc[idxPrim5TaxUder] = "PRIM5FF" + mes; nc[idxDiv5] = "DIV5" + mes; nc[idxDiv5TaxIsch] = "DIV5TF" + mes; nc[idxDiv5TaxUder] = "DIV5FF" + mes; msFld[idxTaxDED ][i] = CTabl.Find_Name_Fld(nc[idxTaxDED ]); msFld[idxTaxI ][i] = CTabl.Find_Name_Fld(nc[idxTaxI ]); msFld[idxTaxDI ][i] = CTabl.Find_Name_Fld(nc[idxTaxDI ]); msFld[idxTaxPRLIST ][i] = CTabl.Find_Name_Fld(nc[idxTaxPRLIST ]); msFld[idxTaxRKLIST ][i] = CTabl.Find_Name_Fld(nc[idxTaxRKLIST ]); msFld[idxTaxPFLIST ][i] = CTabl.Find_Name_Fld(nc[idxTaxPFLIST ]); msFld[idxTaxFLLIST ][i] = CTabl.Find_Name_Fld(nc[idxTaxFLLIST ]); msFld[idxTaxINCODNR ][i] = CTabl.Find_Name_Fld(nc[idxTaxINCODNR ]); msFld[idxTaxINCODNRD ][i] = CTabl.Find_Name_Fld(nc[idxTaxINCODNRD ]); msFld[idxTaxTAXRF ][i] = CTabl.Find_Name_Fld(nc[idxTaxTAXRF ]); msFld[idxTaxTAXVZ ][i] = CTabl.Find_Name_Fld(nc[idxTaxTAXVZ ]); msFld[idxTaxRECK ][i] = CTabl.Find_Name_Fld(nc[idxTaxRECK ]); msFld[idxTaxFUTTAX ][i] = CTabl.Find_Name_Fld(nc[idxTaxFUTTAX ]); msFld[idxTaxDEDW ][i] = CTabl.Find_Name_Fld(nc[idxTaxDEDW ]); msFld[idxTaxTAX07_N ][i] = CTabl.Find_Name_Fld(nc[idxTaxTAX07_N ]); msFld[idxTaxTAX07_C ][i] = CTabl.Find_Name_Fld(nc[idxTaxTAX07_C ]); msFld[idxTaxTAX07_F ][i] = CTabl.Find_Name_Fld(nc[idxTaxTAX07_F ]); msFld[idxTaxTAX13_N ][i] = CTabl.Find_Name_Fld(nc[idxTaxTAX13_N ]); msFld[idxTaxTAX13_C ][i] = CTabl.Find_Name_Fld(nc[idxTaxTAX13_C ]); msFld[idxTaxTAX13_F ][i] = CTabl.Find_Name_Fld(nc[idxTaxTAX13_F ]); msFld[idxTaxFTAX_C ][i] = CTabl.Find_Name_Fld(nc[idxTaxFTAX_C ]); msFld[idxTaxFTAX_F ][i] = CTabl.Find_Name_Fld(nc[idxTaxFTAX_F ]); msFld[idxTaxVTAX_C ][i] = CTabl.Find_Name_Fld(nc[idxTaxVTAX_C ]); msFld[idxTaxVTAX_F ][i] = CTabl.Find_Name_Fld(nc[idxTaxVTAX_F ]); msFld[idxTaxI_9 ][i] = CTabl.Find_Name_Fld(nc[idxTaxI_9 ]); msFld[idxTaxI_35 ][i] = CTabl.Find_Name_Fld(nc[idxTaxI_35 ]); msFld[idxTaxPays_13 ][i] = CTabl.Find_Name_Fld(nc[idxTaxPays_13 ]); msFld[idxTaxPays_9 ][i] = CTabl.Find_Name_Fld(nc[idxTaxPays_9 ]); msFld[idxTaxPays_30 ][i] = CTabl.Find_Name_Fld(nc[idxTaxPays_30 ]); msFld[idxTaxPays_35 ][i] = CTabl.Find_Name_Fld(nc[idxTaxPays_35 ]); msFld[idxTaxPays_15 ][i] = CTabl.Find_Name_Fld(nc[idxTaxPays_15 ]); msFld[idxTaxPays5m_15][i] = CTabl.Find_Name_Fld(nc[idxTaxPays5m_15]); msFld[idxPrim5 ][i] = CTabl.Find_Name_Fld(nc[idxPrim5 ]); msFld[idxPrim5TaxIsch][i] = CTabl.Find_Name_Fld(nc[idxPrim5TaxIsch]); msFld[idxPrim5TaxUder][i] = CTabl.Find_Name_Fld(nc[idxPrim5TaxUder]); msFld[idxDiv5 ][i] = CTabl.Find_Name_Fld(nc[idxDiv5 ]); msFld[idxDiv5TaxIsch ][i] = CTabl.Find_Name_Fld(nc[idxDiv5TaxIsch ]); msFld[idxDiv5TaxUder ][i] = CTabl.Find_Name_Fld(nc[idxDiv5TaxUder ]); } } ToAnsi(&Array, n) { string str; for (int i=0; i= SizePage_DL ) { // CFile_DL.ListFeed(); } break; } } print(Str); // если тип бумаги - рулон, то никаких действий не выполняем if ( KindPaper_DL ) { CountLine = CFile_DL.GetLineCounter(); switch ( Dop ) { case 1: break; case 2: break; } } return 0; } Trim(&str) { var s = TrimN(str); str = s; return s; } GetAlgForTax(idx) { switch(idx) { case idxTaxPays_13: return 205; case idxTaxPays_30: return 207; case idxTaxPays_35: return 209; case idxTaxPays_9: return 208; case idxTaxPays_15: return 210; case idxTaxPays5m_15: return 206; } return -1; } HideRowsFor5MillionIncomeTax() { int cntBlocks = 4; int startBlockRow[cntBlocks]; startBlockRow[0] = 162; startBlockRow[1] = 133; startBlockRow[2] = 75; startBlockRow[3] = 71; int cntRowsInBlock = 4; for ( int i = 0; i < cntBlocks; i++ ) { for ( int j = 0; j < cntRowsInBlock; j++ ) { tRowHeight2(startBlockRow[i] + j,0); } } tRowHeight2(105,0); } // DI - Доходы со скидками // R_Tax(114) - Список вида: // 1 - код дохода; // 2 - доход; // 3 - код скидки; // 4 - скидка; // PRLIST - Суммы дохода // R_Tax(115) - Список вида: // 1 - Сумма основного дохода; // 2 - суммы скидок по основному доходу; // 3 - доход за вычетом скидок; // 4 - сумма вычетов по основному доходу; // 5 - облагаемая сумма основного дохода; // 6 - начисленный налог; // 7 - фактически удержанный налог; // 8 - долг по налогу; // Доходы, облагаемые по ставке 35% - например, выгода // RKLIST - Суммы по РК // R_Tax(116) - Список вида: // 1 - Сумма р/к; // 2 - суммы скидок по р/к; // 3 - р/к за вычетом скидок; // 4 - сумма вычетов по р/к; // 5 - облагаемая сумма р/к; // 6 - начисленный налог; // 7 - фактически удержанный налог; // 8 - долг по налогу; // Доход, облагаемый по ставке 6% - Дивиденды // PFLIST - Суммы по выгоде // R_Tax(117) - Список вида: // 1 - сумма выгоды; // 2 - суммы скидок по выгоде; // 3 - выгода за вычетом скидок; // 4 - сумма вычетов по выгоде; // 5 - облагаемая сумма выгоды; // 6 - начисленный налог; // 7 - фактически удержанный налог; // 8 - долг по налогу; // FLLIST - Общие суммы // R_Tax(118) - Список вида: // 1 - Сумма общего дохода; // 2 - суммы скидок по общему доходу; // 3 - сумма общего дохода за вычетом скидок; // 4 - сумма вычетов по общему доходу; // 5 - облагаемая сумма общего дохода; // 6 - начисленный налог; // 7 - фактически удержанный налог; // 8 - долг по налогу; // TAXRF - Налоги в бюджет РФ // R_Tax(119) - Список вида: // 1 - сумма начисленного налога по основному доходу; // 2 - фактически удержано налога по основному доходу; // 3 - долг по налогу по основному доходу; // 4 - сумма начисленного налога по р/к; // 5 - фактически удержано налога по р/к; // 6 - долг по налогу по р/к; // 7 - сумма начисленного налога по выгоде; // 8 - фактически удержано налога по выгоде; // 9 - долг по налогу по выгоде; // 10 - сумма начисленного налога (всего); // 11 - фактически удержано налога (всего); // 12 - долг по налогу (всего); // I - Доходы без скидок // R_Tax(120) - Список вида: // 1 - код дохода // 2 - доход; // 3 - код скидки; // 4 - скидка;