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

📄 csh510_02.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
  inherited;
  edtCode.Text:='';
  cbAcct.ItemIndex:=-1;
  cbType.ItemIndex:=0;
  cbTypeChange(cbType);
  //取单据编号
  edtDate.Date:=GetServerDate;
  edtBillNo.Text:=GetBillNo(edtDate.Date);
  edtPerson.Text:='';
  edtPersonName.Text:='';
  edtOrgCode.Text:='';
  cbObj.ItemIndex:=0;
  edtCust.Text:='';
  edtCustName.Text:='';
  edtAmount.Text:='0.0';
  memRemark.Text:='';
  cbFrom.ItemIndex:=0;
  adsCsh510B.Close;
  adsCsh510B.CreateDataSet;
  SetDBGridA(cbFrom.ItemIndex);
end;

procedure TCsh510_02Form.SetInterface;
begin
  inherited;
  Caption:=GetDBString('COM00009032');  //收支单维护
  lblCode.Caption:=GetDBString('COM00009033');  //收支单号
  lblAcct.Caption:=GetDBString('CSH51002003');  //帐户名称
  lblFrom.Caption:=GetDBString('CSH51002004');  //来源类型
  lblObj.Caption:=GetDBString('CSH51002005');   //对象类型
  lblCust.Caption:=GetDBString('CSH51002006');  //对象编号
  lblBillNo.Caption:=GetDBString('CSH51002009'); //单据编号
  lblDate.Caption:=GetDBString('CSH51002010');   //收支日期
  lblAmount.Caption:=GetDBString('CSH51002011'); //收支金额
  cbType.Items.Clear;
  cbType.Items.Add(GetDBString('CSH51002014'));  //收入单
  cbType.Items.Add(GetDBString('CSH51002015'));  //支出单
  cbType.Items.Add(GetDBString('CSH51002017'));  //借入单
  cbType.Items.Add(GetDBString('CSH51002018'));  //借出单
  cbType.Items.Add(GetDBString('CSH51002019'));  //还入单
  cbType.Items.Add(GetDBString('CSH51002020'));  //还出单
  cbType.ItemIndex:=0;
  cbTypeChange(cbType);
  cbFrom.Items.Clear;
  cbFrom.Items.Add(GetDBString('CSH51002021'));  //手工输入
  cbFrom.Items.Add(GetDBString('CSH51002022'));  //销售定单
  cbFrom.Items.Add(GetDBString('CSH51002023'));  //采购定单
  cbFrom.Items.Add(GetDBString('CSH51002016'));  //任务工单
  cbFrom.ItemIndex:=0;
  SetDBGridA(cbFrom.ItemIndex);  
  cbObj.Items.Clear;
  cbObj.Items.Add(GetDBString('CSH51002024'));  //客户
  cbObj.Items.Add(GetDBString('CSH51002025'));  //员工
  cbObj.Items.Add(GetDBString('CSH51002026'));  //空白
  cbObj.ItemIndex:=2;
  lblPerson.Caption:=GetDBString('CSH51002034');  //录入员工
  lblBillNo.Caption:=GetDBString('CSH51002035');  //顺序编号
  wwDBGrid1.ColumnByName('FCode').DisplayLabel:=GetDBString('CSH51002036');      //收支单号
  wwDBGrid1.ColumnByName('FLineNo').DisplayLabel:=GetDBString('CSH51002037');    //收支行号
  wwDBGrid1.ColumnByName('FInvCode').DisplayLabel:=GetDBString('CSH51002038');   //发票编号
  wwDBGrid1.ColumnByName('FInvLineNo').DisplayLabel:=GetDBString('CSH51002039'); //发票行号
  wwDBGrid1.ColumnByName('FRecAmount').DisplayLabel:=GetDBString('CSH51002040'); //应收金额
  wwDBGrid1.ColumnByName('FAmount').DisplayLabel:=GetDBString('CSH51002041');    //实收金额
  wwDBGrid1.ColumnByName('FClass').DisplayLabel:=GetDBString('CSH51002042');     //业务分类
  wwDBGrid1.ColumnByName('FProject').DisplayLabel:=GetDBString('CSH51002043');   //项目编号
  wwDBGrid1.ColumnByName('FDept').DisplayLabel:=GetDBString('CSH51002044');      //部门编号
  wwDBGrid1.ColumnByName('FTasCode').DisplayLabel:=GetDBString('CSH51002045');   //任务工单
  wwDBGrid1.ColumnByName('FRemark').DisplayLabel:=GetDBString('CSH51002046');    //备注说明
  //帐户名称
  cbAcct.Items.Clear;
  qryCsh550.Close;
  qryCsh550.Open;
  qryCsh550.First;
  while not qryCsh550.Eof do
  begin
    cbAcct.Items.Add(qryCsh550.FieldByName('C550_002').Value);
    qryCsh550.Next;
  end;
  edtDate.Date:=GetServerDate;  //收支日期
end;

procedure TCsh510_02Form.TableAfterPost;
var
  ACode:string;
  AAmount:Double;
  ADate:TDateTime;
  AAccNo,ACustNo,ABillNo,AObjType:Integer;
begin
  inherited;
  //收支类型(1=收入单,2=支出单,3=转帐单,4=借入单,5=借出单,6=还入单,7=还出单)
  ACode:=edtCode.Text;

  qryCsh510B.Close;
  qryCsh510B.SQL.Clear;
  qryCsh510B.SQL.Add('select * from CSH510B where C510B_001='+''''+edtCode.Text+'''');
  qryCsh510B.Open;
  if adsCsh510B.State in [dsInsert,dsEdit] then adsCsh510B.Post;
  adsCsh510B.First;
  while not adsCsh510B.Eof do
  begin
    qryCsh510B.Append;
    qryCsh510B.FieldByName('C510B_001').Value:=edtCode.Text;                               //收支单号
    qryCsh510B.FieldByName('C510B_002').Value:=adsCsh510B.FieldByName('FLineNo').Value;    //收支行号
    qryCsh510B.FieldByName('C510B_003').Value:=adsCsh510B.FieldByName('FInvCode').Value;   //发票编号
    qryCsh510B.FieldByName('C510B_004').Value:=adsCsh510B.FieldByName('FInvLineNo').Value; //发票行号
    qryCsh510B.FieldByName('C510B_005').Value:=adsCsh510B.FieldByName('FRecAmount').Value; //应收金额
    qryCsh510B.FieldByName('C510B_006').Value:=adsCsh510B.FieldByName('FAmount').Value;    //实收金额
    qryCsh510B.FieldByName('C510B_007').Value:=adsCsh510B.FieldByName('FClassNo').Value;   //业务分类
    qryCsh510B.FieldByName('C510B_008').Value:=adsCsh510B.FieldByName('FProjectNo').Value; //项目编号
    qryCsh510B.FieldByName('C510B_009').Value:=adsCsh510B.FieldByName('FDeptNo').Value;    //部门编号
    qryCsh510B.FieldByName('C510B_010').Value:=adsCsh510B.FieldByName('FTasCode').Value;   //任务工单
    qryCsh510B.FieldByName('C510B_011').Value:=adsCsh510B.FieldByName('FRemark').Value;    //备注说明
    qryCsh510B.Post;
    adsCsh510B.Next;
  end;
//更新相关记录
  AAccNo:=ADOQuery1.FieldByName('C510A_003').value;    //帐户编号
  ADate:=ADOQuery1.FieldByName('C510A_010').value;     //收支日期
  ABillNo:=ADOQuery1.FieldByName('C510A_002').value;   //顺序编号
  AObjType:=ADOQuery1.FieldByName('C510A_007').value;  //对象类型
  ACustNo:=ADOQuery1.FieldByName('C510A_008').value;   //对象编号
  AAmount:=ADOQuery1.FieldByName('C510A_009').value;   //收支金额
//开始更新
  if cbFrom.ItemIndex=1 then  //销售
  begin
    //反写销售发票ACR510B的已收支金额
    UpdateACR510B(AAccNo,ADate,ABillNo,'ADD');
    //反写销售定单ORD510B的已收支金额
    UpdateORD510B(AAccNo,ADate,ABillNo,'O510B_027','ADD');
  end else
  if cbFrom.ItemIndex=2 then  //采购
  begin
    //反写采购发票ACR510B的已收支金额
    UpdateACP510B(AAccNo,ADate,ABillNo,'ADD');
    //反写采购定单PUR510B的已收支金额
    UpdatePUR510B(AAccNo,ADate,ABillNo,'P510B_027','ADD');
  end;
  //更新债权债务帐本表的余额字段
  if cbType.ItemIndex in [2,3,4,5] then
  begin
    UpdateCSH610(AObjType,ACustNo,AAccNo,0,0,ABillNo,0,ADate,AAmount,'','','ADD');
  end;
  //取上条记录的日期&编号
  GetPriorRecord(AAccNo,ADate,ABillNo,ADate,ABillNo);
  //计算余额
  ReCalcBalance(AAccNo, ADate, ABillNo);
end;

procedure TCsh510_02Form.TableBeforePost;
var
  ACode:string;
  AAccNo,APerson:Integer;
  ADate:TDateTime;
  AAmount:Double;
  AObjType,ABillNo,AInOut,ATypeNo,ACustNo:Integer;
begin
  inherited;
//验证数据的有效性,并保存主表
  //校验
  Screen.Cursor:=crHourGlass;
  ACode:=edtCode.Text;
  if not qryHrm150.Locate('H150_002',edtPerson.Text,[]) then
  begin
    ShowMsg('UMS10000698');  //输入的录入人员无效
    edtPerson.Text:='';
    edtPersonName.Text:='';
    edtPerson.SetFocus;
    Abort;
  end;
  if edtCust.Enabled then
  begin
    if not qryOrd150.Locate('FCode',edtCust.Text,[]) then
    begin
      ShowMsg('UMS10000589');  //输入的对象编号无效,请重新输入
      edtCust.Text:='';
      edtCustName.Text:='';
      edtCust.SetFocus;
      Abort;
    end;
  end;

  //收支类型(1=收入单,2=支出单,3=转帐单,4=借入单,5=借出单,6=还入单,7=还出单)
  ATypeNo:=1;
  case cbType.ItemIndex of
    0:ATypeNo:=1;
    1:ATypeNo:=2;
    2:ATypeNo:=4;
    3:ATypeNo:=5;
    4:ATypeNo:=6;
    5:ATypeNo:=7;
  end;
  AInOut:=0;
  case cbType.ItemIndex of
    0,2,4:AInOut:=0;
    1,3,5:AInOut:=1;
  end;

  //删除旧记录
  if AMode='UPD' then
  begin
    SYSDM.qryQuery.Close;
    SYSDM.qryQuery.SQL.Clear;
    SYSDM.qryQuery.SQL.Add('select * from CSH510A where C510A_001='+''''+edtCode.Text+'''');
    SYSDM.qryQuery.Open;

    AAccNo:=SYSDM.qryQuery.FieldByName('C510A_003').value;    //帐户编号
    ADate:=SYSDM.qryQuery.FieldByName('C510A_010').value;     //收支日期
    ABillNo:=SYSDM.qryQuery.FieldByName('C510A_002').value;   //顺序编号
    AObjType:=SYSDM.qryQuery.FieldByName('C510A_007').value;  //对象类型
    ACustNo:=SYSDM.qryQuery.FieldByName('C510A_008').AsInteger; //对象编号
    AAmount:=SYSDM.qryQuery.FieldByName('C510A_009').value;   //收支金额
    //这种修改方式是合理的
    if cbFrom.ItemIndex=1 then  //销售
    begin
      //反写销售发票ACR510B的已收支金额
      UpdateACR510B(AAccNo,ADate,ABillNo,'DEL');
      //反写销售定单ORD510B的已收支金额
      UpdateORD510B(AAccNo,ADate,ABillNo,'O510B_027','DEL');
    end else
    if cbFrom.ItemIndex=2 then  //采购
    begin
      //反写采购发票ACR510B的已收支金额
      UpdateACP510B(AAccNo,ADate,ABillNo,'DEL');
      //反写采购定单PUR510B的已收支金额
      UpdatePUR510B(AAccNo,ADate,ABillNo,'P510B_027','DEL');
    end;
    //更新债权债务帐本表的余额字段
    if cbType.ItemIndex in [2,3,4,5] then
    begin
      UpdateCSH610(AObjType,ACustNo,AAccNo,0,0,ABillNo,0,ADate,AAmount,'','','DEL');
    end;
    SYSDM.qryQuery.Close;
    SYSDM.qryQuery.SQL.Clear;
    SYSDM.qryQuery.SQL.Add('delete from CSH510B where C510B_001='+''''+ACode+'''');
    SYSDM.qryQuery.ExecSQL;
    //取上条记录的日期&编号
    GetPriorRecord(AAccNo,ADate,ABillNo,ADate,ABillNo);
    //计算余额
    ReCalcBalance(AAccNo, ADate, ABillNo);
  end;
  APerson:=qryHrm150.FieldByName('H150_001').Value;
  qryCsh550.Locate('C550_002',cbAcct.Text,[]);
  AAccNo:=qryCsh550.FieldByName('C550_001').Value;
  if adsCsh510B.State in [dsInsert,dsEdit] then adsCsh510B.Post;
  if AMode='ADD' then
  begin
    ADOQuery1.Append;
    ADOQuery1.FieldByName('C510A_016').AsString:=edtCreateDate.Text;  //制单日期
    ADOQuery1.FieldByName('C510A_017').AsString:=edtCreateBy.Text;    //制单人员
    ADOQuery1.FieldByName('C510A_018').AsString:=edtUpdateDate.Text;  //修改日期
    ADOQuery1.FieldByName('C510A_019').AsString:=edtUpdateBy.Text;    //修改人员
  end else
  begin
    ADate:=GetServerDate;
    ADOQuery1.Edit;
    ADOQuery1.FieldByName('C510A_018').AsString:=edtUpdateDate.Text;  //修改日期
    ADOQuery1.FieldByName('C510A_019').AsString:=edtUpdateBy.Text;    //修改人员
  end;
  ADOQuery1.FieldByName('C510A_002').Value:=strtoint(edtBillNo.Text);  //顺序编号
  ADOQuery1.FieldByName('C510A_003').Value:=AAccNo;                     //帐户编号
  ADOQuery1.FieldByName('C510A_004').Value:=ATypeNo;                   //单据类型
  ADOQuery1.FieldByName('C510A_005').Value:=AInOut;                    //收入支出
  ADOQuery1.FieldByName('C510A_006').Value:=cbFrom.ItemIndex;          //来源类型
  ADOQuery1.FieldByName('C510A_007').Value:=cbObj.ItemIndex;           //对象类型
  ADOQuery1.FieldByName('C510A_008').Value:=ACurrNo;                   //对象编号
  ADOQuery1.FieldByName('C510A_009').Value:=strtofloat(edtAmount.Text);//收支金额
  ADOQuery1.FieldByName('C510A_010').Value:=edtDate.DateTime;          //收支日期
//  ADOQuery1.FieldByName('C510A_011').Value:=edtCOrder.Text;          //票据编号  没有使用
  ADOQuery1.FieldByName('C510A_012').Value:=APerson;        //经办人员  没有使用
  ADOQuery1.FieldByName('C510A_013').Value:=0;                         //帐户余额  需要经过自身调整
  ADOQuery1.FieldByName('C510A_014').Value:=edtOrgCode.Text;           //原始单号
  ADOQuery1.FieldByName('C510A_015').Value:=memRemark.Text;            //摘要说明
end;

procedure TCsh510_02Form.UpdateEvent;
begin
  inherited;

end;

procedure TCsh510_02Form.edtItemCustomDlg(Sender: TObject);
var
  ACustNo:Integer;
begin
  inherited;
  ACustNo:=0;
//产品编号
  if edtCust.Enabled then
  begin
    if not qryOrd150.Locate('FCode',edtCust.Text,[]) then
    begin
      ShowMsg('UMS10000266');  //必须先输入正确的客户编号
      edtCust.SetFocus;
      Abort;
    end;
  end;
  case cbFrom.ItemIndex of
    0:AType:='CSH510A';  //手工输入
    1:AType:='CSH510B';  //销售定单
    2:AType:='CSH510C';  //采购定单
    3:AType:='CSH510D';  //任务工单
  end;

  HwSelDataAForm:=THwSelDataAForm.Create(Application);
  HwSelDataAForm.OpenData(AType,0,ACustNo,0,'',GetCurrNo(qryCsh550.FieldByName('C550_001').AsInteger));
  if HwSelDataAForm.ShowModal=1 then
  begin
    Update;
    ABusy:=True;
    Screen.Cursor:=crHourGlass;
    wwDBGrid1.OnUpdateFooter:=nil;
    with HwSelDataAForm do
    begin
      adsInv150.DisableControls;
      adsInv150.First;
      while adsInv150.Locate('FSel',-1,[]) do
      begin
        //显示发票的信息
        adsCsh510B.Append;
        if AType='CSH510D' then
        begin
          adsCsh510B.FieldByName('FTasCode').Value:=adsInv150.FieldByName('FTaskCode').Value;
        end else
        begin
//        adsCsh510B.FieldByName('FCode').Value:=adsInv150.FieldByName('FCode').Value;
//        adsCsh510B.FieldByName('FLineNo').Value:=adsInv150.FieldByName('FLineNo').Value;
          adsCsh510B.FieldByName('FInvCode').Value:=adsInv150.FieldByName('FInvCode').Value;
          adsCsh510B.FieldByName('FInvLineNo').Value:=adsInv150.FieldByName('FInvLineNo').Value;
//        adsCsh510B.FieldByName('FItemID').Value:=adsInv150.FieldByName('FItemID').Value;
//        adsCsh510B.FieldByName('FItemName').Value:=adsInv150.FieldByName('FItemName').Value;
//        adsCsh510B.FieldByName('FItemSpec').Value:=adsInv150.FieldByName('FItemSpec').Value;
//        adsCsh510B.FieldByName('FUnitName').Value:=adsInv150.FieldByName('FUnitName').Value;
          adsCsh510B.FieldByName('FRecAmount').Value:=adsInv150.FieldByName('FRecAmount').Value;
//          adsCsh510B.FieldByName('FAmount').Value:=adsInv150.FieldByName('FAmount').Value;
//          adsCsh510B.FieldByName('FTasCode').Value:=adsInv150.FieldByName('FTaskCode').Value;
        end;
        adsCsh510B.Post;
        adsInv150.Edit;
        adsInv150.FieldByName('FSel').Value:=0;
        adsInv150.Post;
      end;
      adsInv150.EnableControls;
    end;
    wwDBGrid1.OnUpdateFooter:=wwDBGrid1UpdateFooter;
    AIsChanged:=True;
    ABusy:=False;
    wwDBGrid1UpdateFooter(wwDBGrid1);
    Screen.Cursor:=crDefault;
  end;
  ABusy:=False;
end;

procedure TCsh510_02Form.sbCustClick(Sender: TObject);
begin

⌨️ 快捷键说明

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