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

📄 ap110.~pas

📁 一套融入了系统营销管理思想的管理软件产品
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
  GetPurchaseInformation;
  if sTempPurchaseID = '' then
  begin
    NotFoundWarning('进货单单号', qyDetail.FieldByName('PurchaseID').AsString);
    gdDetail.SelectedField := qyDetailPurchaseID;
    Abort;
  end;
  if fTempAccountPayable = fTempPaid then
  begin
    MyWarning('进货单单号:[' +
              qyDetail.FieldByName('PurchaseID').AsString + ']' + #10#13 +
              '已经冲销完毕,请重新输入!');
    gdDetail.SelectedField := qyDetailPurchaseID;
    Abort;
  end;
  if qyDetail.FieldByName('Balance').AsFloat = 0 then
  begin
    MyWarning('本次冲款不可为0,请重新输入!');
    gdDetail.SelectedField := qyDetailBalance;
    Abort;
  end;
  fPaid := qyDetail.FieldByName('Paid').AsFloat +
               qyDetail.FieldByName('Balance').AsFloat -
               fPrevBalance;
  if ((fTempAccountPayable < 0) and (fPaid < fTempAccountPayable)) or
     ((fTempAccountPayable > 0) and (fPaid > fTempAccountPayable)) then
  begin
    MyWarning('本次冲款金额不可大于未冲销余额,请重新输入!');
    gdDetail.SelectedField := qyDetailBalance;
    Abort;
  end;
  qyDetail.FieldByName('Paid').AsFloat := fPaid;
end;

procedure TfmAP110.qyDetailCalcFields(DataSet: TDataSet);
begin
  inherited;
  qyDetail.FieldByName('UnPaid').AsFloat :=
           qyDetail.FieldByName('AccountPayable').AsFloat -
           qyDetail.FieldByName('Paid').AsFloat;
end;

procedure TfmAP110.sbPayDateClick(Sender: TObject);
begin
  inherited;
  MyCalendar(ED1);
end;

procedure TfmAP110.sbSupplierIDClick(Sender: TObject);
begin
  inherited;
  SearchData(ED2, DM.qySupplier);
end;

procedure TfmAP110.dsMasterStateChange(Sender: TObject);
begin
  inherited;
  ED2.ReadOnly := (qyMaster.State <> dsInsert);
  sbPayDate.Enabled := (qyMaster.State = dsInsert);
  sbSupplierID.Enabled := (qyMaster.State = dsInsert);
end;

procedure TfmAP110.gdDetailEditButtonClick(Sender: TObject);
begin
  inherited;
  if (gdDetail.SelectedField.FieldName = 'PurchaseID') and
     (qyDetail.State in [dsInsert, dsEdit]) then
    qyDetail.FieldByName('PurchaseID').AsString := SearchData(edPurchaseID, qyPurchaseMaster);
end;

procedure TfmAP110.qyPurchaseMasterBeforeOpen(DataSet: TDataSet);
begin
  inherited;
  with qyPurchaseMaster do
  begin
    ParamByName('CompanyID').AsString := sCompanyID;
    ParamByName('SupplierID').AsString := qyMaster.FieldByName('SupplierID').AsString;
  end;
end;

procedure TfmAP110.qyMasterUpdateRecord(DataSet: TDataSet;
  UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
var
  fOldPrepaid, fNewPrepaid : Extended;
  sSupplierID : String;
begin
  inherited;
  fOldPrepaid := 0;
  fNewPrepaid := 0;
  case UpdateKind of
    ukInsert :
      begin
        fNewPrepaid := DataSet.FieldByName('Prepaid').NewValue;
        fOldPrepaid := 0;
        sSupplierID := DataSet.FieldByName('SupplierID').NewValue;
      end;
    ukModify :
      begin
        fNewPrepaid := DataSet.FieldByName('Prepaid').NewValue;
        fOldPrepaid := DataSet.FieldByName('Prepaid').OldValue;
        sSupplierID := DataSet.FieldByName('SupplierID').OldValue;
      end;
    ukDelete :
      begin
        fNewPrepaid := DataSet.FieldByName('Prepaid').OldValue;
        fOldPrepaid := DataSet.FieldByName('Prepaid').OldValue;
        sSupplierID := DataSet.FieldByName('SupplierID').OldValue;
      end;
  end;
  with qyTemp do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE Supplier SET Prepaid = Prepaid + :Prepaid ');
    SQL.Add('WHERE CompanyID = :CompanyID AND SupplierID = :SupplierID ');
    ParamByName('CompanyID').AsString := sCompanyID;
    ParamByName('SupplierID').AsString := sSupplierID;
    ParamByName('Prepaid').AsFloat := fNewPrepaid - fOldPrepaid;
    ExecSQL;
  end;
end;

procedure TfmAP110.qyDetailUpdateRecord(DataSet: TDataSet;
  UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
  procedure UpdatePurchaseMasterPaid(PurchaseID: String; Paid: Extended);
  begin
    with qyTemp do
    begin
      Close;
      SQL.Clear;
      SQL.Add('UPDATE PurchaseMaster SET Paid = Paid + :Paid ');
      SQL.Add('WHERE CompanyID = :CompanyID AND PurchaseID = :PurchaseID ');
      ParamByName('CompanyID').AsString := sCompanyID;
      ParamByName('PurchaseID').AsString := PurchaseID;
      ParamByName('Paid').AsFloat := Paid;
      ExecSQL;
    end;
  end;
var
  fOldBalance, fNewBalance : Extended;
  fOldPurchaseID, fNewPurchaseID : String;
begin
  inherited;
  fNewBalance := 0;
  fOldBalance := 0;
  fNewPurchaseID := '';
  fOldPurchaseID := '';
  case UpdateKind of
    ukInsert :
      begin
        fNewBalance := DataSet.FieldByName('Balance').NewValue;
        fOldBalance := 0;
        fNewPurchaseID := DataSet.FieldByName('PurchaseID').NewValue;
        fOldPurchaseID := DataSet.FieldByName('PurchaseID').NewValue;
      end;
    ukModify :
      begin
        fNewBalance := DataSet.FieldByName('Balance').NewValue;
        fOldBalance := DataSet.FieldByName('Balance').OldValue;
        fNewPurchaseID := DataSet.FieldByName('PurchaseID').NewValue;
        fOldPurchaseID := DataSet.FieldByName('PurchaseID').OldValue;
      end;
    ukDelete :
      begin
        fNewBalance := 0;
        fOldBalance := DataSet.FieldByName('Balance').OldValue;
        fNewPurchaseID := DataSet.FieldByName('PurchaseID').OldValue;
        fOldPurchaseID := DataSet.FieldByName('PurchaseID').OldValue;
      end;
  end;
  UpdatePurchaseMasterPaid(fOldPurchaseID, fOldBalance * -1);
  UpdatePurchaseMasterPaid(fNewPurchaseID, fNewBalance);
end;

procedure TfmAP110.GetPurchaseInformation;
begin
  with qyTemp do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT PurchaseID, AccountPayable, Paid ');
    SQL.Add('FROM PurchaseMaster ');
    SQL.Add('WHERE CompanyID = :CompanyID AND PurchaseID = :PurchaseID ');
    SQL.Add('AND SupplierID = :SupplierID ');
    SQL.Add('AND (PurchaseProperty IN (''5'', ''6'')) ');
    ParamByName('CompanyID').AsString := sCompanyID;
    ParamByName('PurchaseID').AsString := qyDetail.FieldByName('PurchaseID').AsString;
    ParamByName('SupplierID').AsString := qyMaster.FieldByName('SupplierID').AsString;
    Open;
  end;
  fTempAccountPayable := qyTemp.FieldByName('AccountPayable').AsFloat;
  fTempPaid := qyTemp.FieldByName('Paid').AsFloat;
  sTempPurchaseID := qyTemp.FieldByName('PurchaseID').AsString;
end;

procedure TfmAP110.qyDetailBeforeInsert(DataSet: TDataSet);
begin
  inherited;
  fPrevBalance := 0;
end;

procedure TfmAP110.qyDetailBeforeEdit(DataSet: TDataSet);
begin
  inherited;
  fPrevBalance := qyDetail.FieldByName('Balance').AsFloat;
end;

procedure TfmAP110.qyMasterSupplierIDValidate(Sender: TField);
begin
  inherited;
  qyMaster.FieldByName('SupplierAttribName').AsString :=
           GetSupplierAttribName(qyMaster.FieldByName('SupplierID').AsString);

end;

procedure TfmAP110.qyDetailPurchaseIDValidate(Sender: TField);
begin
  inherited;
  GetPurchaseInformation;
  qyDetail.FieldByName('Paid').AsFloat := fTempPaid;
  qyDetail.FieldByName('AccountPayable').AsFloat := fTempAccountPayable;
  qyDetail.FieldByName('Balance').AsFloat := fTempAccountPayable - fTempPaid;
end;

procedure TfmAP110.sbSelectClick(Sender: TObject);
begin
  inherited;
  ReData := False;
  qyMaster.DisableControls;
  try
    fmAP110Select := TfmAP110Select.Create(Application);
    fmAP110Select.ShowModal;
    if ReData then begin
      try
        fmLoading := TfmLoading.Create(Application);
        fmLoading.Show;
        fmLoading.Update;
        qyMaster.Close;
        qyMaster.Open;
      finally
        fmLoading.Hide;
        fmLoading.Free;
      end;
    end;
  finally
    qyMaster.EnableControls;
    fmAP110Select.Free;
  end;
end;

end.

⌨️ 快捷键说明

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