csh510_02.pas.svn-base

来自「一个用Delphi开发的ERP软件」· SVN-BASE 代码 · 共 996 行 · 第 1/3 页

SVN-BASE
996
字号
  case cbFrom.ItemIndex of
    0:cbObj.ItemIndex:=2;  //手工输入
    1:cbObj.ItemIndex:=0;  //销售定单
    2:cbObj.ItemIndex:=0;  //采购定单
    3:cbObj.ItemIndex:=2;  //任务工单
  end;
  if cbFrom.ItemIndex in [1,2] then
  begin
    cbObj.Enabled:=False;
    cbObj.Visible:=True;
    edtWork.Visible:=False;
    sbWork.Visible:=False;
  end else if cbFrom.ItemIndex=3 then
  begin
    lblObj.Caption:=GetDBString('CSH51002016');  //任务工单
    cbObj.Enabled:=False;
    cbObj.Visible:=False;
    edtWork.Visible:=True;
    sbWork.Visible:=True;
  end else
  begin
    lblObj.Caption:=GetDBString('CSH51002005');  //对象类型
    cbObj.Enabled:=True;
    cbObj.Visible:=True;
    edtWork.Visible:=False;
    sbWork.Visible:=False;
  end;
  if cbObj.Enabled then cbObj.Color:=AEnableColor else cbObj.Color:=ADisableColor;
  cbObjChange(cbObj);
end;

procedure TCsh510_02Form.cbObjChange(Sender: TObject);
begin
  inherited;
  if (not cbFrom.Enabled) and (cbObj.ItemIndex=2) then cbObj.ItemIndex:=1;
  edtCust.Enabled:=cbObj.ItemIndex<>2;
  sbCust.Enabled:=cbObj.ItemIndex<>2;
  if edtCust.Enabled then edtCust.Color:=AEnableColor else edtCust.Color:=ADisableColor;
  qryOrd150.Close;
  qryOrd150.SQL.Clear;
  case cbObj.ItemIndex of
    0:qryOrd150.SQL.Add('select O150_001 as FNo,O150_002 as FCode,O150_003 as FName from ORD150 order by O150_002');  //客户
    1:qryOrd150.SQL.Add('select H150_001 as FNo,H150_002 as FCode,H150_003 as FName from HRM150 order by H150_002');  //员工
    2:qryOrd150.SQL.Add('select O150_001 as FNo,O150_002 as FCode,O150_003 as FName from ORD150 order by O150_002');  //空白
  end;
  qryOrd150.Open;
end;

procedure TCsh510_02Form.bbtnBackClick(Sender: TObject);
begin
  inherited;
//上一步
  PageControl1.ActivePageIndex:=0;
  bbtnBack.Enabled:=False;
  bbtnNext.Visible:=True;
  bbtnSave.Visible:=False;
end;

procedure TCsh510_02Form.bbtnNextClick(Sender: TObject);
var
  ATypeNo:Integer;
begin
  inherited;
//下一步
  //检验输入的数据
  CheckData;

  //取得相关的来源单据信息
  adsCsh510.Close;
  adsCsh510.CreateDataSet;
  qryQuery.Close;
  qryQuery.SQL.Clear;
  qryQuery.SQL.Add('select A510B_001 as FCode,A510B_002 as FLineNo,A510B_003 as FOrder,A510B_004 as FOrderLine,');
  qryQuery.SQL.Add('       I150_002 as FItemID,I150_003 as FItemName,I150_004 as FItemSpec,I140_003 as FUnitName,');
  qryQuery.SQL.Add('       A510B_010-A510B_012 as FTotAmt,0 as FFactAmt');
  qryQuery.SQL.Add('from ACR510A,ACR510B,ORD510B,INV150,INV140');
  qryQuery.SQL.Add('where A510A_001=A510B_001 and A510B_003=O510B_001 and A510B_004=O510B_002 and O510B_003=I150_001 and');
  qryQuery.SQL.Add('      O510B_004=I140_001 and A510A_002=0 and A510A_003 in (0,2) and A510A_012='+qryOrd150.FieldByName('FNo').AsString);
  qryQuery.Open;
  while not qryQuery.Eof do
  begin
    adsCsh510.Append;
    adsCsh510.FieldByName('FCode').Value:=qryQuery.FieldByName('FCode').Value;
    adsCsh510.FieldByName('FLineNo').Value:=qryQuery.FieldByName('FLineNo').Value;
    adsCsh510.FieldByName('FOrder').Value:=qryQuery.FieldByName('FOrder').Value;
    adsCsh510.FieldByName('FOrderLine').Value:=qryQuery.FieldByName('FOrderLine').Value;
    adsCsh510.FieldByName('FItemID').Value:=qryQuery.FieldByName('FItemID').Value;
    adsCsh510.FieldByName('FItemName').Value:=qryQuery.FieldByName('FItemName').Value;
    adsCsh510.FieldByName('FItemSpec').Value:=qryQuery.FieldByName('FItemSpec').Value;
    adsCsh510.FieldByName('FUnitName').Value:=qryQuery.FieldByName('FUnitName').Value;
    adsCsh510.FieldByName('FTotAmt').Value:=qryQuery.FieldByName('FTotAmt').Value;
    adsCsh510.FieldByName('FFactAmt').Value:=qryQuery.FieldByName('FFactAmt').Value;
    adsCsh510.Post;
    qryQuery.Next;
  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;
  qryQuery.Close;
  qryQuery.SQL.Clear;
  qryQuery.SQL.Add('select A510B_001 as FCode,A510B_002 as FLineNo,A510B_003 as FOrder,A510B_004 as FOrderLine,');
  qryQuery.SQL.Add('       I150_002 as FItemID,I150_003 as FItemName,I150_004 as FItemSpec,I140_003 as FUnitName,');
  qryQuery.SQL.Add('       C510_007 as FTotAmt,C510_008 as FFactAmt');
  qryQuery.SQL.Add('from CSH510,ACR510B,ORD510B,INV150,INV140');
  qryQuery.SQL.Add('where C510_005=A510B_001 and C510_006=A510B_002 and A510B_003=O510B_001 and A510B_004=O510B_002 and O510B_003=I150_001 and O510B_004=I140_001 and C510_001='+IntToStr(AccNo)+' and C510_002='+IntToStr(ATypeNo)+' and C510_003='+GetDateString(edtDate.Date)+' and C510_004='+edtBillNo.Text);
  qryQuery.Open;
  while not qryQuery.Eof do
  begin
    if adsCsh510.Locate('FCode;FLineNo',VarArrayOf([qryQuery.FieldByName('FCode').Value,qryQuery.FieldByName('FLineNo').Value]),[]) then adsCsh510.Edit else adsCsh510.Append;
    adsCsh510.FieldByName('FCode').Value:=qryQuery.FieldByName('FCode').Value;
    adsCsh510.FieldByName('FLineNo').Value:=qryQuery.FieldByName('FLineNo').Value;
    adsCsh510.FieldByName('FOrder').Value:=qryQuery.FieldByName('FOrder').Value;
    adsCsh510.FieldByName('FOrderLine').Value:=qryQuery.FieldByName('FOrderLine').Value;
    adsCsh510.FieldByName('FItemID').Value:=qryQuery.FieldByName('FItemID').Value;
    adsCsh510.FieldByName('FItemName').Value:=qryQuery.FieldByName('FItemName').Value;
    adsCsh510.FieldByName('FItemSpec').Value:=qryQuery.FieldByName('FItemSpec').Value;
    adsCsh510.FieldByName('FUnitName').Value:=qryQuery.FieldByName('FUnitName').Value;
    adsCsh510.FieldByName('FTotAmt').Value:=qryQuery.FieldByName('FTotAmt').Value;
    adsCsh510.FieldByName('FFactAmt').Value:=qryQuery.FieldByName('FFactAmt').Value;
    adsCsh510.Post;
    qryQuery.Next;
  end;

  PageControl1.ActivePageIndex:=1;
  bbtnBack.Enabled:=True;
  bbtnNext.Visible:=False;
  bbtnSave.Visible:=True;
end;

procedure TCsh510_02Form.cbTypeChange(Sender: TObject);
begin
  inherited;
  qryCsh140.Close;
  qryCsh140.SQL.Clear;
  case cbType.ItemIndex of
    0,2,4:qryCsh140.SQL.Add('select * from CSH140 where C140_003=0');  //收入
    1,3,5:qryCsh140.SQL.Add('select * from CSH140 where C140_003=1');  //支出
  end;
  qryCsh140.Open;
  case cbType.ItemIndex of
    0,1:cbFrom.Enabled:=True;
    2,3,4,5:cbFrom.Enabled:=False;
  end;
  if cbFrom.Enabled then
    cbFrom.Color:=AEnableColor
  else
  begin
    cbFrom.ItemIndex:=0;
    cbFrom.Color:=ADisableColor;
    cbObj.ItemIndex:=1;
  end;
  cbFromChange(cbFrom);
  case cbType.ItemIndex of
    0,1:cbObj.ItemIndex:=0; 
    2,3,4,5:cbObj.ItemIndex:=1;
  end;
  cbObjChange(cbObj);
end;

procedure TCsh510_02Form.SetEmptyInit;
begin
  cbType.ItemIndex:=0;
  cbTypeChange(cbType);
  edtCode.Text:='';
  cbAcct.ItemIndex:=0;
  cbFrom.ItemIndex:=0;
  cbFromChange(cbFrom);
  cbObj.ItemIndex:=2;
  cbObjChange(cbObj);
  cbClass.Text:='';
  edtCust.Text:='';
  edtCustName.Text:='';
  edtRemark.Text:='';
  cbItem.Text:='';
  cbDept.Text:='';
  edtDate.Date:=GetServerDate;
  edtBillNo.Text:=GetBillNo(edtDate.Date);
  edtAmount.Text:='0';
  AOldAccNo:=0;
  AOldDate:=0;
  AOldBillNo:=0;
  AOldAmount:=0;
  AOldTasks:='';
  AOldObjType:=0;
  AOldCurrNo:=0;
end;

procedure TCsh510_02Form.qryCsh500AfterScroll(DataSet: TDataSet);
begin
  inherited;
  if qryCsh500.State in [dsInsert,dsEdit] then Exit;
  if (qryCsh500.IsEmpty) or (AMode='ADD') then
  begin
    SetEmptyInit;  //初始化
    Exit;
  end;

  //收支类型(1=收入单,2=支出单,3=转帐单,4=借入单,5=借出单,6=还入单,7=还出单)
  case qryCsh500.FieldByName('C500_002').AsInteger of
    1:cbType.ItemIndex:=0;
    2:cbType.ItemIndex:=1;
    4:cbType.ItemIndex:=2;
    5:cbType.ItemIndex:=3;
    6:cbType.ItemIndex:=4;
    7:cbType.ItemIndex:=5;
  end;
  cbTypeChange(cbType);
  edtDate.Date:=qryCsh500.FieldByName('C500_003').Value;  //日期
  edtBillNo.Text:=qryCsh500.FieldByName('C500_004').AsString;  //单据编号
  AOldCustNo:=0;
  if edtCust.Enabled then
  begin
    if qryOrd150.Locate('FNo',qryCsh500.FieldByName('C500_005').Value,[]) then
    begin
      edtCust.Text:=qryOrd150.FieldByName('FCode').AsString;  //编号
      edtCustName.Text:=qryOrd150.FieldByName('FName').AsString;  //名称
      edtCust1.Text:=qryOrd150.FieldByName('FCode').AsString;  //编号
      edtCustName1.Text:=qryOrd150.FieldByName('FName').AsString;  //名称
      AOldCustNo:=qryOrd150.FieldByName('FNo').AsInteger;
    end else
    begin
      edtCust.Text:='';
      edtCustName.Text:='';
      edtCust1.Text:='';
      edtCustName1.Text:='';
      AOldCustNo:=0;
    end;
  end;
  cbClass.Text:=qryCsh500.FieldByName('C140_002').AsString;  //业务分类
  edtAmount.Text:=qryCsh500.FieldByName('C500_007').AsString;  //金额
  edtRemark.Text:=qryCsh500.FieldByName('C500_009').AsString;  //摘要
  if qryCsh150.Locate('C150_001',qryCsh500.FieldByName('C500_011').Value,[]) then
    cbItem.Text:=qryCsh150.FieldByName('C150_002').AsString  //项目
  else
    cbItem.Text:='';
  if qryHrm100.Locate('H100_001',qryCsh500.FieldByName('C500_012').Value,[]) then
    cbDept.Text:=qryHrm100.FieldByName('H100_002').AsString  //部门
  else
    cbDept.Text:='';
  cbFrom.ItemIndex:=qryCsh500.FieldByName('C500_016').Value;  //来源类型(0=手工输入,1=销售定单,2=采购定单,3=任务工单)
  cbFromChange(cbFrom);
  cbObj.ItemIndex:=qryCsh500.FieldByName('C500_015').Value;  //对象类型(0=客户,1=员工,2=空白)
  cbObjChange(cbObj);
  edtCode.Text:=qryCsh500.FieldByName('C500_017').Value;  //原始单号

  AOldAccNo:=qryCsh500.FieldByName('C500_001').Value;
  AOldDate:=qryCsh500.FieldByName('C500_003').Value;
  AOldBillNo:=qryCsh500.FieldByName('C500_004').Value;
  AOldAmount:=qryCsh500.FieldByName('C500_007').Value;
  AOldTasks:=qryCsh500.FieldByName('C500_018').Value;
  case cbObj.ItemIndex of
    1:AOldObjType:=0;
    2:AOldObjType:=1;
  end;
  AOldCurrNo:=GetValue('select C550_005 from CSH550 where C550_001='+IntToStr(AOldAccNo));
end;

procedure TCsh510_02Form.edtCustExit(Sender: TObject);
begin
  inherited;
//对象编号
  if trim(edtCust.Text)='' then Exit;
  if qryOrd150.Locate('FCode',edtCust.Text,[]) then
  begin
    edtCust.Text:=qryOrd150.FieldByName('FCode').AsString;
    edtCustName.Text:=qryOrd150.FieldByName('FName').AsString;
    edtCust1.Text:=qryOrd150.FieldByName('FCode').AsString;
    edtCustName1.Text:=qryOrd150.FieldByName('FName').AsString;
  end else
  begin
    ShowMsg('UMS10000589');  //输入的对象编号无效,请重新输入
    edtCust.SetFocus;
    Abort;
  end;
end;

procedure TCsh510_02Form.sbWorkClick(Sender: TObject);
begin
  inherited;
//任务工单
  if not edtWork.Focused then edtWork.SetFocus;
  qryTas520.Close;
  qryTas520.Open;
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryTas520,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    edtWork.Text:=qryTas520.FieldByName('T520_001').AsString;
  end;
end;

procedure TCsh510_02Form.edtWorkExit(Sender: TObject);
begin
  inherited;
//任务工单
  if trim(edtWork.Text)='' then Exit;
  qryTas520.Close;
  qryTas520.Open;
  if qryTas520.Locate('T520_001',edtWork.Text,[]) then
  begin
    edtWork.Text:=qryTas520.FieldByName('T520_001').AsString;
  end else
  begin
    ShowMsg('UMS10000290');  //输入的工单编号无效
    edtWork.SetFocus;
    Abort;
  end;
end;

procedure TCsh510_02Form.dxDBGrid1ColumnMoved(Sender: TObject; FromIndex,
  ToIndex: Integer);
begin
  inherited;
  if adsCsh510.State in [dsEdit] then adsCsh510.Post;
end;

initialization
  RegisterClass(TCsh510_02Form);

finalization
  UnRegisterClass(TCsh510_02Form);

end.

⌨️ 快捷键说明

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