usalebill.pas

来自「天涯進銷存系統」· PAS 代码 · 共 1,221 行 · 第 1/3 页

PAS
1,221
字号
            BillBodyData);
  if BillHandData.FieldByName('isAuditing').AsString='1' then
  Auditing.Visible:=True
  else
  Auditing.Visible:=False;
  if BillHandData.FieldByName('isExecute').AsString='1' then
   InPubImg.Visible:=True
  else
   InPubImg.Visible:=False;
end;

procedure TfrmSaleBill.Action1Execute(Sender: TObject);
begin
  SetView;
  ClientDBEdit.SetFocus;
  ClientDBEdit.DataField:='ClientCode';
  BillBodyData.ReadOnly:=False;
  BillHandData.ReadOnly:=False;
  BillHandData.Append;
  BillBodyData.Append;
  BillHandData.Fieldbyname('BillCode').asstring:='新单据';
  BillHandData.FieldByName('Operator').asstring:=UserName;
  BillHandData.Fieldbyname('BILLDATE').asDateTime:=Date;
  BillHandData.FieldByName('isAccept').AsString:='0';
  BillHandData.FieldByName('isAuditing').AsString:='0';
  BillHandData.FieldByName('AcceptSum').asFloat:=0;
  BillHandData.FieldByName('Agiosum').asFloat:=0;
  BillHandData.Fieldbyname('OutPutType').asstring:='1';
  BillBodyData.Fieldbyname('BillCode').asstring:='新单据';
  BillBodyData.Fieldbyname('ID').asInteger:=1;
  BillBodyData.Post;
  OldSum:=0;
  Sum:=0;
  OldCode:='';
  isEdit:=False;
  isStateEdit:=True;
  DepotDBEditEnter(Nil);
  BillInfoLabel.Caption:='';
  OldClientCode:='';
end;

procedure TfrmSaleBill.Action2Execute(Sender: TObject);
begin
  if BillHandData.IsEmpty then
  begin
    Application.MessageBox('没有可修改的销售单。',Hintinfo,$30);
    Exit;
  end;
  if BillHandData.FieldByName('isAuditing').asstring='1' then
  begin
    Application.MessageBox('此销售单已审核,不可修改。',Hintinfo,$30);
    Exit; 
  end;
  SetView;
  ClientDBEdit.SetFocus;
  ClientDBEdit.DataField:='ClientCode'; 
  try
    BillHandData.ReadOnly:=False;
    BillBodyData.ReadOnly:=False;
    BillHandData.Edit;
    BillBodyData.Edit;
  except
    SetView;
    Application.MessageBox('修改数据错误。',Hintinfo,$10);
    ClientDBEdit.DataField:='ClientName';
    Exit;
  end;
  Sum:=BillHandData.FieldByName('TOTALSUM').AsFloat;
  isEdit:=True;
  isStateEdit:=True;
  DepotDBEditEnter(Nil);
end;

procedure TfrmSaleBill.Action3Execute(Sender: TObject);
var
  BillCode: string;
begin
 if BillHandData.IsEmpty then
  begin
    Application.MessageBox('没有可删除的销售单。',Hintinfo,$30);
    Exit;
  end;
  if BillHandData.FieldByName('isAuditing').asstring='1' then
  begin
    Application.MessageBox('此销售单已审核,不可删除。',Hintinfo,$30);
    Exit;
  end;
  if Application.MessageBox('确定在要删除当前销售单吗?',Hintinfo,$24)=idYes then
  begin
    BillHandData.ReadOnly:=False;
    BillCode:=BillHandData.Fieldbyname('BillCode').asstring;
    try
      BillHandData.Delete;
      BillHandData.ApplyUpdates(-1);
      DeleteBillBody('Delete From PartsOutPutBody where BillCode='+#39+BillCode+#39);
      OpenData('select * from PartsOutPutHand Order by BillCode DESC',
               BillHandData);
    except
      Application.MessageBox('删除数据不成功。',Errorinfo,$10);
    end;
    BillHandData.ReadOnly:=True;
  end;
end;

procedure TfrmSaleBill.Action4Execute(Sender: TObject);
begin
  PrintView('RepSaleBill.frf', Report);
end;

procedure TfrmSaleBill.Action5Execute(Sender: TObject);
begin
  if BillHandData.IsEmpty then
  begin
    Application.MessageBox('没有可审核的单据。',Hintinfo,$30);
    Exit;
  end;
  if BillHandData.FieldByName('isAuditing').AsString='1' then
  begin
    Application.MessageBox('此单据已审核。',Hintinfo,$30);
    Exit;
  end;
  if Application.MessageBox('确定要审核此销售单吗?',Hintinfo,$24)=idYes then
     SetAuditing;
end;

procedure TfrmSaleBill.Action6Execute(Sender: TObject);
begin
  if BillHandData.IsEmpty then
  begin
    Application.MessageBox('没有可出库的单据。',Hintinfo,$30);
    Exit;
  end;
  if BillHandData.FieldByName('isExecute').AsString='1' then
  begin
    Application.MessageBox('此单据已出库。',Hintinfo,$30);
    Exit;
  end;
  if BillHandData.FieldByName('isAuditing').AsString<>'1' then
  begin
    Application.MessageBox('请先审核单据后再出库。',Hintinfo,$30);
    Exit;
  end;
  PickUpType:=1;
  PickUpGoodsNo:=BillHandData.Fieldbyname('BillCode').asstring;
  PickUpGoodsUnitCode:=BillHandData.Fieldbyname('ClientCode').asstring;
  PickUpGoodsUnit:=BillHandData.Fieldbyname('ClientName').asstring;
  PickUpDepotCode:=BillHandData.Fieldbyname('DepotCode').asstring;
  PickUpDepotName:=BillHandData.Fieldbyname('DepotName').asstring;
  PickHandTableName:='PartsOutPutHand';
  PickBodyTableName:='PartsOutPutBody';

  FrmPartOutPutStock:=TFrmPartOutPutStock.Create(Application);
  FrmPartOutPutStock.ShowModal;
  FrmPartOutPutStock.Free;

  OpenData('Select * from PartsOutPutHand where BillCode='+#39+PickUpGoodsNo+#39+
           ' Order by BillCode DESC',BillHandData);

end;


procedure TfrmSaleBill.Action8Execute(Sender: TObject);
var
  sql: string;
begin
  SelectBillCode:='';
  SelectBillType:=0;
  OpposingCode:=BillHandData.Fieldbyname('ClientCode').asstring;
  SelectSaleBill;
  if  SelectBillCode<>'' then
  begin
    sql:='Select * from PartsOutPutHand where'+
         ' BillCode='+#39+SelectBillCode+#39+
         'Order by BillCode DESC';
    OpenData(sql,BillHandData);
  end;
end;

procedure TfrmSaleBill.Action9Execute(Sender: TObject);
begin
  OpenData('Select * from PartsOutPutHand where OutPutType='''+'1'''+' Order by BillCode DESC',BillHandData);
  BillInfoLabel.Caption:='';
end;

procedure TfrmSaleBill.Action10Execute(Sender: TObject);
var
  i:integer;
begin
  i:=0;
  if (BillBodyData.RecordCount=1)and
   (PartCodeDBEdit.Text='')  then
  begin
    Application.MessageBox(NotPartsOfSave, Hintinfo,$30);
    Exit;
  end;
  BillBodyData.Edit;
  BillBodyData.Post;
  DBCtrlGrid.SetFocus;
  if BillHandData.FieldByName('ClientCode').AsString='' then
  begin
    Application.MessageBox('客户不能为空,请输入。',Hintinfo,$30);
    ClientDBEdit.SetFocus;
    Exit;
  end;
  if BillHandData.FieldByName('DepotCode').AsString='' then
  begin
    Application.MessageBox('仓库不能为空,请输入。',Hintinfo,$30);
    DepotDBEdit.SetFocus;
    Exit;
  end;
  if BillHandData.FieldByName('BillDate').AsString='' then
  begin
    Application.MessageBox('销售日期不能为空,请输入。',Hintinfo,$30);
    BillDateDBEdit.SetFocus;
    Exit;
  end;
  if not isEdit then
  begin
    BillHandData.Edit;
    BillHandData.Fieldbyname('BILLCode').asstring:=ComDepotCode+'-'+'XS'+'-'+
          GetBillID('22', BillHandData.Fieldbyname('BILLDATE').asstring);
  end;
  with BillBodyData do
  begin
    First;
    while not Eof do
    begin
      if Fieldbyname('PartCode').asstring<>'' then
      begin
        Edit;
        Fieldbyname('ID').asinteger:=i+1;
        Fieldbyname('ReimburseQry').asfloat:=0;
        Fieldbyname('OutPutQry').asfloat:=0;
        Fieldbyname('BILLCode').asstring:=BillHandData.Fieldbyname('BILLCode').asstring;
        Fieldbyname('COSTPRICE').asfloat:=GetCostprice(Fieldbyname('PartCode').asstring);
        i:=i+1;
        Next;
      end
      else
      begin
        BillHandData.Edit;
        BillHandData.FieldByName('TOTALSUM').asfloat:=
        BillHandData.FieldByName('TOTALSUM').asfloat-
        Fieldbyname('TOTALSUM').AsFloat;
        Sum:=BillHandData.FieldByName('TOTALSUM').asfloat;
        Delete;
        if BillBodyData.RecNo=BillBodyData.RecordCount  then
        Next;
      end;
    end;
  end;
  if BillBodyData.IsEmpty then
  begin
    Application.MessageBox(NotPartsOfSave, Hintinfo,$30);
    Exit;
  end;
  Try
    BillBodyData.ApplyUpdates(-1);
    BillHandData.ApplyUpDates(-1);
    Application.MessageBox(DataSaveOfSucceed,Hintinfo,$30);
  except
    Application.MessageBox(DataSaveOfFail, Errorinfo,$10);
    BillBodyData.CancelUpdates;
    BillHandData.CancelUpdates;
  end;
  BillBodyData.First;
  Sum:=0;
  isStateEdit:=False;
  SetView;
  BillBodyData.ReadOnly:=True;
  BillHandData.ReadOnly:=True;
  Action5Execute(Sender);
end;


procedure TfrmSaleBill.Action11Execute(Sender: TObject);
begin
  DBCtrlGrid.SetFocus;
  BillBodyData.CancelUpdates;
  BillHandData.CancelUpdates;
  BillBodyData.First;
  Sum:=0;
  isStateEdit:=False;
  SetView;
  BillBodyData.ReadOnly:=True;
  BillHandData.ReadOnly:=True;
end;

procedure TfrmSaleBill.ClientDBEditExit(Sender: TObject);
begin
 if (Trim(ClientDBEdit.Text)<>'') and (isStateEdit) and
     (Trim(ClientDBEdit.Text)<>OldClientCode) then
  begin
    OpenData('select Code, ClientName from Clientinfo where Code='+
             #39+Trim(ClientDBEdit.Text)+#39, dmData.sdsPublic);
    if dmData.sdsPublic.IsEmpty then
    begin
      Application.MessageBox(PChar('没有编号为“'+Trim(ClientDBEdit.Text)+
                             '”的客户,请重新输入。'),Hintinfo, $30);
      BillHandData.Edit;
      BillHandData.FieldByName('ClientCode').asstring:=OldClientCode;
      ClientDBEdit.SetFocus;
      Exit;
    end;
    BillHandData.Edit;
    BillHandData.FieldByName('ClientName').asstring:=
    dmData.sdsPublic.FieldByName('ClientName').asstring;
  end
  else
  if (Trim(ClientDBEdit.Text)='') and
     (Trim(ClientDBEdit.Text)<>OldClientCode) then
  begin
    BillHandData.Edit;
    BillHandData.FieldByName('ClientName').asstring:='';
  end;
  ClientDBEdit.DataField:='ClientName';
end;

procedure TfrmSaleBill.ClientDBEditEnter(Sender: TObject);
begin
  if isStateEdit then
  begin
    ClientDBEdit.DataField:='ClientCode';
    OldClientCode:=Trim(ClientDBEdit.Text);
  end;
end;

procedure TfrmSaleBill.ClientDBEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (ssCtrl in Shift) and( Key=13) then
  begin
    LBEditButton1Click(Nil);
    Exit;
  end;
  if key=13 then  Perform(WM_NEXTDLGCTL,0,0);
end;

procedure TfrmSaleBill.DBCtrlGridKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  key:=0;
end;

procedure TfrmSaleBill.PartCodeDBEditDblClick(Sender: TObject);
begin
  if not isStateEdit then Exit;
  if BillBodyData.Fieldbyname('OrderID').asstring<>'' then
  begin
    Application.MessageBox('来自订货单的商品,不可修改。',Hintinfo, $30);
    Exit; 
  end;
  BillSum:=BillHandData.Fieldbyname('TOTALSUM').asfloat;
  PartSum:=BillBodyData.Fieldbyname('TOTALSUM').asfloat;
  OpposingCode:=BillHandData.Fieldbyname('ClientCode').asstring;
  SelectPartType:=5;
  SelectPartCds:=BillBodyData;
  SelectParts;
  OldCode:=Trim(PartCodeDBEdit.Text);
  Sum:=BillSum;
  BillHandData.Edit;
  BillHandData.Fieldbyname('TOTALSUM').asfloat:=Sum;
  BillHandData.FieldByName('BigSum').asstring:=
  SumSmallTOBig(BillHandData.FieldByName('TotalSum').Asfloat);
end;

procedure TfrmSaleBill.LBSpeecButton3Click(Sender: TObject);
var
  BillCode: string;
begin
  if BillHandData.IsEmpty then
  begin
    Application.MessageBox('没有可删除的采购订货单。',Hintinfo,$30);
    Exit;
  end;
  if BillHandData.FieldByName('isAuditing').asstring='1' then
  begin
    Application.MessageBox('此采购订货单已审核,不可删除。',Hintinfo,$30);
    Exit;
  end;
  if Application.MessageBox('确定在要删除当前订货单吗?',Hintinfo,$24)=idYes then
  begin
    BillHandData.ReadOnly:=False;
    BillCode:=BillHandData.Fieldbyname('BillCode').asstring;
    try
      BillHandData.Delete;
      BillHandData.ApplyUpdates(-1);
      DeleteBillBody('Delete From OrderBillBody where BillCode='+#39+BillCode+#39);
      OpenData('select * from OrderBillHand Order by BillCode DESC',
               BillHandData);
    except
      Application.MessageBox('删除数据不成功。',Errorinfo,$10);
    end;
    BillHandData.ReadOnly:=True;
  end;
end;

procedure TfrmSaleBill.LBEditButton1Click(Sender: TObject);
begin
  if not isStateEdit then Exit;
  ClientDBEdit.SetFocus;
  SelectClient;
  if OpposingCode<>'' then
  begin
    BillHandData.Edit;
    BillHandData.FieldByName('ClientCode').asstring :=OpposingCode;
    ClientDBEdit.Text:=OpposingCode;

⌨️ 快捷键说明

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