/* $Id: sumzap1.c,v 5.14 2013/11/24 08:23:04 sasa Exp $ */
/*13.01.2022	18.11.1997	Белых А.И.	sumzap1.c
Получение суммы по документу материального учета
*/
#include        "buhg.h"

extern double	okrg1;  /*Округление суммы*/

void sumzap1(int d,int m,int g,
const char *nn,
int skl,
double *suma,    /*Сумма по на которую начисляется НДС*/
double *sumabn,  /*сумма на которую не начисляется НДС*/
//int lnds,
short vt,
double *sumkor,  /*Сумма скидки (корректировки) по документу*/
int tipz,
double *kolihmat) /*Количество материалов*/
{
long		kolstr;
SQL_str         row,row1;
char		strsql[512];
short		kgrm;
double		cena,kolih,bb;
class SQLCURSOR cur;
class SQLCURSOR cur1;
float pnds=0.;

//printw("\n%s\n",__FUNCTION__);

*sumabn=0.;
*suma=0.;
*sumkor=0.;
*kolihmat=0.;

/*узнаём процент НДС для документа*/
sprintf(strsql,"select pn from Dokummat where datd='%04d-%02d-%02d' and sklad=%d and nomd='%s'",
g,m,d,skl,nn);

if(iceb_t_sql_readkey(strsql,&row,&cur) == 1)
 pnds=atof(row[0]);

/*Узнаем сумму скидки*/

sprintf(strsql,"select sodz from Dokummat2 \
where god=%d and sklad=%d and nomd='%s' and nomerz=13",
g,skl,nn);

if(iceb_t_sql_readkey(strsql,&row,&cur) == 1)
 {
  bb=iceb_tu_atof(row[0]);
  *sumkor=iceb_tu_okrug(bb,0.01);
 }

/*Узнаем сумму всех записей*/
sprintf(strsql,"select kodm,cena,kolih,voztar from Dokummat1 \
where datd='%04d-%d-%d' and sklad=%d and nomd='%s' and tipz=%d",
g,m,d,skl,nn,tipz);
if((kolstr=cur.make_cursor(&bd,strsql)) < 0)
 {
  iceb_t_msql_error(&bd,gettext("Ошибка создания курсора !"),strsql);
  return;
 }

while(cur.read_cursor(&row) != 0)
 {
//  printw("%s-%s %s %s %s\n",  __FUNCTION__, row[0],row[1],row[2],row[3]);
    
  bb=atof(row[1])*atof(row[2]);
  bb=iceb_tu_okrug(bb,okrg1);
  *kolihmat+=atof(row[2]);

  /*Узнаем код группы*/
  sprintf(strsql,"select kodgr from Material where kodm=%s",
  row[0]);
  if(iceb_t_sql_readkey(strsql,&row1,&cur1) != 1)
   {
    beep();
    printw("%s %s !\n",gettext("Не найден код материалла"),row[0]);
    OSTANOV();
   }

  kgrm=atoi(row1[0]);     

//  if(atof(row[3]) == 1 || (kgrm == vt && vt != 0) || lnds == 1 || lnds == 2 || lnds == 3)
  if(atof(row[3]) == 1 || (kgrm == vt && vt != 0) || pnds == 0.)
    *sumabn=*sumabn+bb;
  else
    *suma=*suma+bb;

 }

/*Читаем услуги*/
sprintf(strsql,"select kolih,cena from Dokummat3 where \
datd='%04d-%02d-%02d' and sklad=%d and nomd='%s'",g,m,d,skl,nn);

if((kolstr=cur.make_cursor(&bd,strsql)) < 0)
 {
  iceb_t_msql_error(&bd,gettext("Ошибка создания курсора !"),strsql);
  return;
 }

if(kolstr == 0)
 {
  return;
 }

while(cur.read_cursor(&row) != 0)
 {
  kolih=atof(row[0]);
  cena=atof(row[1]);

  if(kolih > 0)
    bb=kolih*cena;
  else
    bb=cena;

  bb=iceb_tu_okrug(bb,okrg1);

  if(pnds == 0.)
   *sumabn=*sumabn+bb;
  else
   *suma=*suma+bb;

 }


}
