⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emptj_shouzhi_month.pas

📁 服装厂管理系统源程序压缩包, 请耐心阅读提供的文件包含的内容
💻 PAS
📖 第 1 页 / 共 3 页
字号:
              else
              begin
                close; sql.Clear;
                sql.Add('insert into personshouzhi(empid,yearmonth,fshou,lastbalance)');
                sql.Add('values(:v_empid,:v_yearmonth,:v_fshou,:V_lastbalance)');
                parameters.ParamValues['v_empid']:=strtoint(trim(DBComboBox2.Text));
                parameters.ParamValues['V_yearmonth']:=adoqtmp.FieldValues['year_month'];
                parameters.ParamValues['v_fshou']:=adoqtmp.FieldValues['total'];
                parameters.ParamValues['v_lastbalance']:=get_lastbalance(strtoint(trim(DBComboBox2.Text)),adoqtmp.FieldValues['year_month']);
                try
                  execsql;
                except
                  DataTJ_flag:=False;
                  if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
                  break; exit;
                end;
              end;//2.4.End
              //2.5.2如果员工附加收入入总账成功则修改[Tjflag]字段值
              with ADOQ_TJFlag do
              begin
                close; sql.Clear;
                sql.Add('update earn_abs set Tjflag=1 where empid=:v_empid');
                parameters.ParamValues['v_empid']:=adoqtmp.FieldValues['empid'];
                try
                  execsql;
                except
                  DataTJ_flag:=False;
                  if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
                  break; exit;
                end;
              end;//2.5.2.End
            end;//如果没找到则添加.Else.End
          end;//while not eof do.End.2
          //2.提交数据
          if not DataTJ_flag then
          begin
            if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
            MsgErr(handle,'统计人员月收支报表失败--附加收入!');
            break; exit;
          end;
          if datamod.ADOCon.InTransaction then
          begin
            try
              datamod.ADOCon.CommitTrans;
            except
              MsgErr(handle,'统计人员月收支报表失败--附加收入!');
              if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
              break; exit;
            end;
          end;
          next;
        end;
     end;

     
     //4.计算支出(A~当前日期)************************************************************
     //4.得到当前人员收支表所有已统计的记录(刷新)
     with ADOQpersonshouzhi do
     begin
        //取出当前表内所有与empid有关的数据
        close;sql.Clear;
        sql.add('select  * from personshouzhi where empid=:v_empid order by yearmonth desc');
        parameters.ParamValues['v_empid']:=strtoint(trim(DBComboBox2.Text));
        try
          open;
        except
        end;
     end;
     
     with adoqtmp do
     begin
        close;sql.clear;
        sql.add('select empid, year_month,sum(money) as total from v_borrow');
        sql.add('where TJflag=0 and empid=:v_empid');
        sql.add('group by year_month,empid order by  year_month');
        parameters.ParamValues['v_empid']:=strtoint(trim(DBComboBox2.Text));
        open; first;
        ProgressBar1.Max:=ProgressBar1.Max+adoqtmp.RecordCount;
        application.ProcessMessages;
        while not eof do
        begin
          ProgressBar1.Position:=ProgressBar1.Position+1;
          application.ProcessMessages;
          DataTJ_flag:=true; //初始化标量
          //4.2 数据开始提交
          datamod.ADOCon.BeginTrans;
          with ADOQupdate do
          begin
            //4.2.1得到当前人员当月的收支总表的记录
            close; sql.Clear;
            sql.Add('select * from personshouzhi where empid=:v_empid and yearmonth=:V_yearmonth');
            parameters.ParamValues['v_empid']:=strtoint(trim(DBComboBox2.Text));
            parameters.ParamValues['V_yearmonth']:=adoqtmp.FieldValues['year_month'];
            try
              execsql; open;
            except
              datatj_flag:=false;
              if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
              break; exit;
            end;//4.2.1.End
            //4.2.2如果该员工该月存在收支记录,则修改收入
            if recordcount>0 then
            begin
              close; sql.Clear;
              sql.Add('update personshouzhi set zhi=zhi+:v_total');
              sql.Add('where empid=:v_empid and yearmonth=:V_yearmonth');
              parameters.ParamValues['v_empid']:=strtoint(trim(DBComboBox2.Text));
              parameters.ParamValues['V_yearmonth']:=adoqtmp.FieldValues['year_month'];
              parameters.ParamValues['v_total']:=adoqtmp.FieldValues['total'];
              try
                execsql;
              except
                DataTJ_flag:=false;
                if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
                break; exit;
              end;

              //4.2.2.1如果员工工序收入入总账成功则修改[Tjflag]字段值
              with ADOQ_TJFlag do
              begin
                close; sql.Clear;
                sql.Add('update brrow set Tjflag=1 where empid=:v_empid');
                parameters.ParamValues['v_empid']:=adoqtmp.FieldValues['empid'];
                try
                  execsql;
                except
                  DataTJ_flag:=False;
                  if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
                  break; exit;
                end;
              end;//4.2.2.1.End
            end//2.2.End
            else
            //如果没找到则添加.Else
            begin
              //2.3如果个人月收支表中没找到记录则直接新增
              if ADOQpersonshouzhi.RecordCount =0 then
              begin
                close; sql.Clear;
                sql.Add('insert into personshouzhi(empid,yearmonth,zhi)');
                sql.Add('values(:v_empid,:v_yearmonth,:v_zhi)');
                parameters.ParamValues['v_empid']:=strtoint(trim(DBComboBox2.Text));
                parameters.ParamValues['V_yearmonth']:=adoqtmp.FieldValues['year_month'];
                parameters.ParamValues['v_zhi']:=adoqtmp.FieldValues['total'];
                try
                  execsql;
                except
                  DataTJ_flag:=False;
                  if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
                  break; exit;
                end;
              end//2.3.End
              //2.4如果个人收支表中已有收入记录则找到上条记录取上月结余
              else
              begin
                close; sql.Clear;
                sql.Add('insert into personshouzhi(empid,yearmonth,zhi,lastbalance)');
                sql.Add('values(:v_empid,:v_yearmonth,:v_zhi,:V_lastbalance)');
                parameters.ParamValues['v_empid']:=strtoint(trim(DBComboBox2.Text));
                parameters.ParamValues['V_yearmonth']:=adoqtmp.FieldValues['year_month'];
                parameters.ParamValues['v_zhi']:=adoqtmp.FieldValues['total'];
                parameters.ParamValues['v_lastbalance']:=get_lastbalance(strtoint(trim(DBComboBox2.Text)),adoqtmp.FieldValues['year_month']);
                try
                  execsql;
                except
                  DataTJ_flag:=False;
                  if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
                  break; exit;
                end;
              end;//2.4.End
              //2.5.2如果员工工序收入入总账成功则修改[Tjflag]字段值
              with ADOQ_TJFlag do
              begin
                close; sql.Clear;
                sql.Add('update brrow set Tjflag=1 where empid=:v_empid');
                parameters.ParamValues['v_empid']:=adoqtmp.FieldValues['empid'];
                try
                  execsql;
                except
                  DataTJ_flag:=False;
                  if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
                  break; exit;
                end;
              end;//2.5.2.End
            end;//如果没找到则添加.Else.End
          end;//while not eof do.End.2
          //2.提交数据
          if not DataTJ_flag then
          begin
            if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
            MsgErr(handle,'统计人员月收支报表失败--员工支出!');
            break; exit;
          end;
          if datamod.ADOCon.InTransaction then
          begin
            try
              datamod.ADOCon.CommitTrans;
            except
              MsgErr(handle,'统计人员月收支报表失败--员工支出!');
              if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
              break; exit;
            end;
          end;
          next;
        end; //while not eof do
    end;//计算支出结束
    
    ProgressBar1.Position:=0;
    Label_Display.Visible:=false;
    application.ProcessMessages;
   end;//如果是重新统计则执行以下操作.End


  //查讯对应时间段的人员的工序收入信息
  with adoquery1 do
  begin
    close;sql.clear;
    sql.add('select id,yearmonth, lastbalance,shou,fshou,zhi,balance from Personshouzhi ');
    sql.add('where empid=:v_empid and (yearmonth between :v_sd and :v_ed) order by yearmonth asc ');
    parameters.ParamValues['v_empid']:=trim(dbcombobox2.Text);
    parameters.ParamValues['v_sd']:=formatdatetime('yyyy-mm',sdate.Date);
    parameters.ParamValues['v_ed']:=formatdatetime('yyyy-mm',edate.Date);
    open;
    if recordcount=0 then MsgOK(handle,'当前时间段内没找到数据!');
    prtbtn.Enabled:=recordcount>0;
    if recordcount>0 then
    begin
      emp_id:=trim(DBComboBox2.Text);
      emp_name:=edtname.text;
      s_date:=formatdatetime('yyyy-mm',sdate.Date)+'月';
      e_date:=formatdatetime('yyyy-mm',edate.Date)+'月';
    end;
  end;
end;

procedure TFrmEMPTJ_SHOUZHI_month.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   Action:=Cafree;
end;

procedure TFrmEMPTJ_SHOUZHI_month.DBComboBox2Change(Sender: TObject);
begin
  dbcombobox2.Text:=trim(dbcombobox2.Text);
  edtname.Clear;
end;

procedure TFrmEMPTJ_SHOUZHI_month.PrtBtnClick(Sender: TObject);
begin
  InitPage(RvProject1,RvSystem1,apppath+'\'+ReportName,apppath+'\'+ReportNdrName,0);
  SelectPage(RvProject1,'Report1',3);
  //传递参数
  AddParameter(RvProject1,'UserName',curAdmin.user_name);
  AddParameter(RvProject1,'empid',emp_id);
  AddParameter(RvProject1,'empname',emp_name);
  AddParameter(RvProject1,'companyname',sysconfig.COMPANYANME);
  AddParameter(RvProject1,'sdate',s_date);
  AddParameter(RvProject1,'edate',e_date);
  //显示页
  PageShow(RvProject1);
end;

procedure TFrmEMPTJ_SHOUZHI_month.DBEdit3KeyPress(Sender: TObject; var Key: Char);
begin
  if not ( key in ['0'..'9',chr(8),chr(13)]) then abort;
end;

procedure TFrmEMPTJ_SHOUZHI_month.DBComboBox2KeyPress(Sender: TObject;
  var Key: Char);
begin
  if trim(DBComboBox2.Text)='' then exit;
  if not ( key in ['0'..'9',chr(8),chr(13)]) then abort;
  if key <> chr(13) then exit;
  edtname.Clear;
  if ADOQemp.FieldValues['empid']<>trim(DBComboBox2.Text) then
  begin
    if not ADOQemp.Locate('empid',trim(DBComboBox2.Text),[]) then
    begin
      MsgErr(handle,'人员编码  ['+trim(DBComboBox2.Text)+']  不存在!');
      DBComboBox2.SetFocus; exit;
    end;
    edtname.Text:=ADOQemp.FieldValues['empname'];
    edtsex.Text:=ADOQemp.FieldValues['sex'];
  end
  else
  begin
      edtname.Text:=ADOQemp.FieldValues['empname'];
      edtsex.Text:=ADOQemp.FieldValues['sex'];
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -