// передача инфо  из табл "6-НДФЛ: разноска дат выплаты дохода в ЛС (для разноски НДФЛ)"
// в промежут табл ndfl_info2.tmp  при выходе из таблицы
// вызов модуля из "Конец закрытия таблицы"__:
//       UnloadScriptModule("user\\ndfl_uplata");LoadScriptModule("user\\ndfl_uplata");return Dial_2(__AdrTable);  
//

 var CTabl = CreateObject("CurPrnTbl");


// организовать приём в табл "6-НДФЛ: разноска дат выплаты дохода в ЛС (для разноски НДФЛ)" 
// информации из выделенной табл "Реестр в банк"   пример в  Ctrl_SZVm
// по каждому ТН принимать сумму перечисления для сравнения с суммой по виду
// (для идентификации вида при наличии нескольких одинаковых видов в месяце)
// вызов из "Ф-ция приёма из файла"   user\ndfl_uplata,ReadTblBnk,0

ReadTblBnk( AdrCTabl,     // адрес передаваемой таблицы
        AdrCListTabl,     // адрес списка таблиц
           RcrInList      // номер записи в списке таблиц
        )
{
   int MaxRec = 99999;
   double sm_bnk[MaxRec];                                      //  массив для приёма сумм из 
   for ( int LRcr=0; LRcr<MaxRec; LRcr++ )  {sm_bnk[LRcr]=0;}  //  таблицы перечисления в банк

   var SpTabl  = CreateObject("CurPrnTbl");     // таблица из списка (перечисл в банк)
                                                // из поля CASHSUM
   var CListTabl = CreateObject("CurPrnTbl");   // список таблиц
   CListTabl.Initial(AdrCListTabl);

   int CountTabl = 0;

   for ( int LRcr=0; LRcr<CListTabl.Count_Rcr(); LRcr++ )
   {
      if( CListTabl.Check_Empty_Rcr(LRcr) || !CListTabl.Flag_Action_0(LRcr) ) continue;

      long newt = CListTabl.GetTableFromList(LRcr);
      if ( !newt ) continue;

      SpTabl.Initial(newt);

//      CountTabl = CountTabl + 1;                                    
//      if (ESC==Panel_Zapros(" Прием информации из таблиц ","",
//                        "  Таблица_N: ",CountTabl, 3)            ) return ESC;
                                                              
     // Начинаем обработку файла построчно
     for ( int RcrTbl=0; RcrTbl<SpTabl.Count_Rcr(); ++RcrTbl )
      {
       int NewTN = atoi(SpTabl.TextS("C_FIO",RcrTbl));       
       if(NewTN < 1)  NewTN = atoi(SpTabl.TextS("TN",RcrTbl));        // для Новик
       double sumBnk = atof(SpTabl.TextS("CASHSUM",RcrTbl));
       if(sumBnk < 1) sumBnk = atof(SpTabl.TextS("ITRA",RcrTbl));     // для Новик
       sm_bnk[NewTN] = sumBnk;
      }
   }

   // обраб текущую табл
   CTabl.Initial(AdrCTabl);                                 
   int CurRcr = CTabl.Count_Rcr()-1;                    // устанвливаем счетчик
   //_________ обработка текущей таблицы
   for ( int RcrTbl=0; RcrTbl<CTabl.Count_Rcr(); ++RcrTbl )
    {
      int tn        = atoi(CTabl.TextS("C_FIO",RcrTbl));
      double sumvid = atof(CTabl.TextS("Fld130_RO",RcrTbl));
      double bez_ndfl = atof(CTabl.TextS("bez_ndfl",RcrTbl));

      double sumBnk = sm_bnk[tn];
      CTabl.STextS("sum_ree",RcrTbl, to_string(sumBnk));   // суммы из реестра
      double razn = 0;
      razn = sumvid - sumBnk;
      CTabl.STextS("razn",RcrTbl, to_string(razn));        // разница=СумВид-СумРее
      double razn2 = 0;
      razn2 = bez_ndfl - sumBnk;
      CTabl.STextS("razn2",RcrTbl, to_string(razn2));        // разница=СумВидБезНДФЛ-СумРее

    }
     CTabl.Rewrite();

  return 1;
}



// _______________________ из  Ctrl_SZVm ___________________________


//  CTabl.Initial(AdrCTabl);    // текущая таблица
//  CTabl.Clear();              // очистка таблицы

//   var CListTabl = CreateObject("CurPrnTbl");   // список таблиц
//   CListTabl.Initial(AdrCListTabl);

  // int CrIns=CListTabl.GetCountInsertRcr();     // колич таблиц, выделнных INS
  //
  // if (ESC==Panel_Zapros(" Просмотр списка выбранных таблиц ","",
  //                       "Всего выбрано таблиц: ",CrIns, 3)      
  //                                                         ) return ESC;                                                             
  //   надо добавить (вставить)

//   for ( int LRcr=0; LRcr<CListTabl.Count_Rcr(); LRcr++ )
//   {
//      if( CListTabl.Check_Empty_Rcr(LRcr) || !CListTabl.Flag_Action_0(LRcr) ) continue;

//      long newt = CListTabl.GetTableFromList(LRcr);
//      if ( !newt ) continue;

//      SpTabl.Initial(newt);
//      CountTabl = CountTabl + 1;
                                    
//      if (ESC==Panel_Zapros(" Прием информации из таблиц ","",
//                        "  Таблица_N: ",CountTabl, 3)
//                                                              ) return ESC;
//      ReadTbl();  
//   }

//  return 1;
//}

//ReadTbl()
//{
           // Если у нас получилась всего одна строка да и та пустая   (т.е. в файле нет информации), то выходим
           // if ( SpTabl.Count_Rcr()<2 &&  SpTabl.Check_Empty_Rcr(0)==-1 ) return ESC;

//     string fio, frv;
     
     // Начинаем обработку файла построчно
//     for ( int RcrTbl=0; RcrTbl<SpTabl.Count_Rcr(); ++RcrTbl )
//      {
//       int NewTN = atoi(SpTabl.TextS("C_FIO",RcrTbl));
//       string FIO = SpTabl.TextS("FIO",RcrTbl);
//... 
//       заполнить массив  mas[tn] = sum;  по каждому ТН сумму перечисл в банк
//      }
//}






Dial_2(__AdrTable)
{
 CTabl.Initial(__AdrTable);

 int Write = 0;
 if (ESC==Panel_Zapros(" Передача информации в промежуточную таблицу НДФЛ с сумм дохода ","",
                        "Передать информацию (1-да): ",Write, 3)
                                                              ) return ESC;
 int WriOn = atoi(Write);
 if(WriOn)  ReadWritTabl();
}


ReadWritTabl()
{
 var SprTabl = CreateObject("CurPrnTbl");               // промежуточная таблица
 SprTabl.InitialNameFile("T_PAYSTBL\\ndfl_info2.tmp");     // для передачи информации
 SprTabl.Clear();                        
 int CurRcr = SprTabl.Count_Rcr()-1;                    // устанвливаем счетчик



 for (int zap=0; zap<CTabl.Count_Rcr(); zap++)
  {
    //string tn  = CTabl.TextS("C_FIO",zap);      
    int tn     = atoi(CTabl.TextS("C_FIO",zap));      
    string fio = CTabl.TextS("FullFIO",zap);  
    string dat = CTabl.TextS("Fld110",zap);  
    int ndfl = atoi(CTabl.TextS("ndfl",zap));      

         SprTabl.Add_Rcr(CurRcr,1);
         //SprTabl.STextS("Order",CurRcr, static_cast_to_string(or));
         SprTabl.STextS("C_FIO",CurRcr, static_cast_to_string(tn));
         SprTabl.STextS("FIO",CurRcr, static_cast_to_string(fio));
         SprTabl.STextS("ndfl",CurRcr, static_cast_to_string(ndfl));
         //SprTabl.STextS("Date",CurRcr, static_cast_to_string(datatek));
         SprTabl.STextS("Date",CurRcr, static_cast_to_string(dat));

         CurRcr++;
  }                                                  
     
     SprTabl.Del_Empty_Rcr();
     SprTabl.Reduce();
     SprTabl.Rewrite();
}




// приём инфо  из  промежут табл ndfl_info1.tmp  в табл  "Уплата НДФЛ в ЛС - из реестров КБМ 202010"
// вызов модуля  ReadSprTbl  из "Начало расчета таблицы"__:
//       UnloadScriptModule("user\\ndfl_uplata");LoadScriptModule("user\\ndfl_uplata");return ReadSprTbl(__AdrTable);  
//
ReadSprTbl(__AdrTable)
{
   int MaxRec = 99999;
   double sm_ndfl[MaxRec];
   for ( int LRcr=0; LRcr<MaxRec; LRcr++ )      // подготавливаем предварительно массив
    {
     sm_ndfl[LRcr]=0;      //RSV_tn[LRcr]="";
    }

   CTabl.Initial(__AdrTable);         //CTabl.Clear();                        
   int CurRcr = CTabl.Count_Rcr()-1;                    // устанвливаем счетчик

   var SprTabl = CreateObject("CurPrnTbl");               // промежуточная таблица
   SprTabl.InitialNameFile("T_PAYSTBL\\ndfl_info2.tmp");


   string payDate   = CTabl.TextS("PayDate",0);         //PayDate   - Дата_упл
   string paymentID = CTabl.TextS("PaymentID",0);       //PaymentID - НомПлатПор

   //_________ обработка записей промежут. таблицы
   for ( int RcrTbl=0; RcrTbl<SprTabl.Count_Rcr(); ++RcrTbl )
    {
      int tn     = atoi(SprTabl.TextS("C_FIO",RcrTbl));
      string fio = SprTabl.TextS("FIO",RcrTbl);  
      int ndfl   = atoi(SprTabl.TextS("ndfl",RcrTbl));      
      string dat = SprTabl.TextS("Date",RcrTbl);  

      sm_ndfl[tn] = ndfl;
    }


   //_________ обработка текущей таблицы
   for ( int RcrTbl=0; RcrTbl<CTabl.Count_Rcr(); ++RcrTbl )
    {
      int tn     = atoi(CTabl.TextS("C_FIO",RcrTbl));

      int ndfl   = sm_ndfl[tn];
      CTabl.STextS("Summary",RcrTbl, to_string(ndfl));          // заполняем суммы НДФЛ из промежут табл
      CTabl.STextS("PayDate",RcrTbl, to_string(payDate));       // заполняем 
      CTabl.STextS("PaymentID",RcrTbl, to_string(paymentID));   // заполняем 

      //string mes_pn = to_string(ndfl);
      //string mes_tn = to_string(tn);
      //AmbaMessageBox("Таб№_ "+mes_tn+"  _НДФЛ_"+mes_pn,"Записи массива",0, 0);


      //   CTabl.Add_Rcr(CurRcr,1);
      //   CTabl.STextS("C_FIO",CurRcr, static_cast_to_string(tn));
      //   CTabl.STextS("FIO",CurRcr, static_cast_to_string(fio));
      //   CTabl.STextS("Month",CurRcr, static_cast_to_string(mon));
      //   CTabl.STextS("KindTax",CurRcr, static_cast_to_string(VidNDFL));    
      //   CTabl.STextS("Summary",CurRcr, static_cast_to_string(ndfl));
      //   CTabl.STextS("Date",CurRcr, static_cast_to_string(dat));
      //   CurRcr++;


    }
     CTabl.Del_Empty_Rcr();
     CTabl.Rewrite();

}




