/* $Id:$ */
/*14.10.2024    27.12.1996	Белых А.И.	prbpern1.c
Определяем сумму обязательных удержаний за месяц расчёта плюс все выплаты в счёт
месяца расчёта 
если зарплата выплачена то эта сумма должна равнятся сумме начислений в месяце расчёта
*/

#include        "buhg.h"
extern short	*obud; /*Обязательные удержания*/

double prbper1(short mz,short gz,short dk,short mk,short gk,int tabb,FILE *ff_prot)
{
double          sum=0.;
long		kolstr;
SQL_str         row,row1;
char		strsql[1024];

sprintf(strsql,"select datz,knah,suma,godn,mesn from Zarp where godn=%d and mesn=%d and \
tabn=%d and prn='2' and datz <= '%d-%d-%d' and suma <> 0. \
order by tabn,godn,mesn asc",gz,mz,tabb,gk,mk,dk);

if(ff_prot != NULL)
 fprintf(ff_prot,"%s-%s\n",__FUNCTION__,strsql);

class SQLCURSOR cur,cur1;
if((kolstr=cur.make_cursor(&bd,strsql)) < 0)
 {
  iceb_t_msql_error(&bd,"__FUNCTION__",strsql);
  return(0.);
 }

short d,m,g;
double suma=0.;
while(cur.read_cursor(&row) != 0)
 {
  iceb_tu_rsdat(&d,&m,&g,row[0],2);

  /*Если в будущих датах есть перерасчёт подоходного в счёт месяца расчёта то 
  он не должен попадать*/
  if(provkod(obud,atoi(row[1])) >= 0) 
   {
    if(m > mz || g > gz)
      continue;
   }    

  suma=sum+=atof(row[2]);

  if(ff_prot != NULL)
   {
    class iceb_tu_str naim("");

    sprintf(strsql,"select naik from Uder where kod=%s",row[1]);

    if(iceb_t_sql_readkey(strsql,&row1,&cur1) == 1)
     naim.new_plus(row1[0]);


    fprintf(ff_prot,"%s-%s %3s %-*.*s %10s %s.%s\n",__FUNCTION__,iceb_tu_datzap(row[0]),row[1],
    iceb_tu_kolbait(20,naim.ravno()),
    iceb_tu_kolbait(20,naim.ravno()),
    naim.ravno(),
    row[2],row[4],row[3]);
   }
 }

if(kolstr > 0)
 if(ff_prot != NULL)
  fprintf(ff_prot,"%s-                               Итого %.2f\n",__FUNCTION__,suma);

/*Обязательные ужержания не в счёт расчётного месяца сделанные в расчётном
месяце должны тоже попадать- перерасчёт подоходного */
sprintf(strsql,"select datz,knah,suma,godn,mesn,prn from Zarp where \
datz >= '%d-%d-%d' and datz <= '%d-%d-%d' and (godn != %d or mesn != %d) and \
tabn=%d and prn='2' and suma <> 0. \
order by tabn,godn,mesn asc",gz,mz,1,gz,mz,31,gz,mz,tabb);

if((kolstr=cur.make_cursor(&bd,strsql)) < 0)
 {
  iceb_t_msql_error(&bd,"__FUNCTION__",strsql);
  return(0.);
 }

if(ff_prot != NULL)
 fprintf(ff_prot,"%s-%s\n",__FUNCTION__,strsql);
suma=0.; 
while(cur.read_cursor(&row) != 0)
 {
  if(provkod(obud,atoi(row[1])) < 0) 
   continue;

  suma=sum+=atof(row[2]);
  if(ff_prot != NULL)
   {
    class iceb_tu_str naim("");

    sprintf(strsql,"select naik from Uder where kod=%s",row[1]);

    if(iceb_t_sql_readkey(strsql,&row1,&cur1) == 1)
     naim.new_plus(row1[0]);

    fprintf(ff_prot,"%s-%s %3s %-*.*s %10s %s.%s\n",__FUNCTION__,row[0],row[1],
    iceb_tu_kolbait(20,naim.ravno()),
    iceb_tu_kolbait(20,naim.ravno()),
    naim.ravno(),
    row[2],row[4],row[3]);

   }
 }

if(kolstr > 0)
 if(ff_prot != NULL)
  fprintf(ff_prot,"%s-                               Итого %.2f\n",__FUNCTION__,suma);



if(sum != 0.)
 sum=iceb_tu_okrug(sum,0.01);

return(sum);

}
