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

📄 ca020.pas

📁 电子充值系统:全球通的充值卡通过POS机传到销售点.
💻 PAS
📖 第 1 页 / 共 2 页
字号:
begin
  inherited;
  with qyDetail do
  begin
    FieldByName('OutCode').AsString := qyMaster.FieldByName('OutCode').AsString;
    if gdDetail.Columns[2].PickList.Count > 0 then
      FieldByName('CardType').AsString := gdDetail.Columns[2].PickList.strings[0]
    else
      FieldByName('CardType').AsString := Space(3);
    FieldByName('Amount').AsFloat := 0;
    qyDetailCARDTYPEChange(qyDetailCARDTYPE);
    //FieldByName('CardParValue').AsFloat := 0;
    FieldByName('CardQuantity').AsFloat := 0;
  end;
end;

procedure TfmCA020.qyDetailBeforePost(DataSet: TDataSet);
var
  fNotSaleCardQuantity : real;
begin
  inherited;
  fNotSaleCardQuantity := GetNotSaleCardQuantuty( qyDetail.fieldbyname('cardtype').AsString,qyDetail.fieldbyname('cardparvalue').AsFloat );
  if fNotSaleCardQuantity < qyDetail.FieldByName('CardQuantity').AsFloat then
  begin
    MyWarning('卡库存不足!面值'
       + floattostr( qyDetail.fieldbyname('cardparvalue').AsFloat)
       + '元的' + qyDetail.fieldbyname('cardtype').AsString
       + '只有' + floattostr(fNotSaleCardQuantity)+'张');
    abort;
  end;

  CalcSalesAmount;

  if qyDetail.State = dsInsert then
  begin
    qyDetail.FieldByName('ID').AsFloat := GetSerialID('Pwpt_CardOutDetail_ID');
  end;
end;

procedure TfmCA020.CalcSalesAmount;
begin
  qyDetail.FieldByName('Amount').AsFloat :=
           qyDetail.FieldByName('CardParValue').AsFloat *
           qyDetail.FieldByName('CardQuantity').AsFloat;
//  qyDetail.FieldByName('Amount').AsFloat:=FormatFloat(qyDetail.FieldByName('Amount').AsFloat,0);
end;

procedure TfmCA020.dsMasterStateChange(Sender: TObject);
begin
  inherited;
  //ED2.ReadOnly := (qyMaster.State <> dsInsert);
end;

procedure TfmCA020.InsertIntoSaleCardStock(fPayCode: Extended);
begin
  with qyTemp do
  begin
    Close;
    SQL.Clear;
    SQL.Add('insert into Pwpt_SaleCardStock (CardCode,CardType,CardParValue, ');
    SQL.Add('PublishCode,SerialNumber,CardNo,PassWord,EndDate,CheckCode, ');
    SQL.Add('CreateMan,CreateDate,bOut,PayCode,SaleCode ) ');
    SQL.Add('select CardCode,CardType,CardParValue,PublishCode, ');
    SQL.Add('SerialNumber,CardNo,PassWord,EndDate,CheckCode,OutMan,');
    SQL.Add('OutDate,''0'',PayCode,SaleCode from Pwpt_CardStock');
    SQL.Add(' where PayCode = :PayCode');
    ParamByName('PayCode').AsFloat := fPayCode;
    ExecSql;
  end;
end;

procedure TfmCA020.UpdatePayCite(fPayCode: Extended);
begin
  with qyTemp do
  begin
    Close;
    SQL.Clear;
    SQL.Add('Update Pwpt_Pay Set bCite =''1'' ');
    SQL.Add(' where PayCode = :PayCode');
    ParamByName('PayCode').AsFloat := fPayCode;
    ExecSql;
  end;
end;

procedure TfmCA020.gdDetailEditButtonClick(Sender: TObject);
begin
  inherited;
  {
  if (gdDetail.SelectedField.FieldName = 'ProductID') and
     (qyDetail.State in [dsInsert, dsEdit]) then
    qyDetail.FieldByName('ProductName').AsString := SearchData(edProductID, DM.qyProduct);
   }
end;

procedure TfmCA020.sbOutCodeClick(Sender: TObject);
begin
  inherited;
  DBEdit8.Text := SearchData(ED1, DM.qySale);
end;

procedure TfmCA020.sbPayCodeClick(Sender: TObject);
begin
  inherited;
  qyPay.Close;
  qyPay.Open;
  DBEdit4.Text := SearchData(ED2, qyPay);
end;

procedure TfmCA020.qyDetailAfterInsert(DataSet: TDataSet);
begin
  inherited;
  gdDetail.SelectedField := qyDetailCardType;
end;

procedure TfmCA020.qyDetailUpdateRecord(DataSet: TDataSet;
  UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
var
  fNewQuantity, fOldQuantity : Extended;
  fNewAmount, fOldAmount : Extended;
  sNewCardType : string;
  fNewCardParValue, fNewCardQuantity : Extended;

begin
  inherited;
  if ReSortting then Exit;
  fNewQuantity := 0;
  fOldQuantity := 0;
  fNewAmount := 0;
  fOldAmount := 0;
  
  fNewCardParValue := 0;
  fNewCardQuantity :=0;

  case UpdateKind of
    ukInsert :
      begin
        sNewCardType :=DataSet.FieldByName('CardType').NewValue;
        fNewCardParValue := DataSet.FieldByName('CardParValue').NewValue;
        fNewCardQuantity :=DataSet.FieldByName('CardQuantity').NewValue;
        //修改卡资源表未出库状态,填入缴费编号、销售点编号、出库人及日期
        UpdateCardStock(sNewCardType,sSaleCode,fNewCardParValue,rPrevPayCode,fNewCardQuantity);
      end;
    ukModify :
      begin
      end;
    ukDelete :
      begin
      end;
  end;
end;

procedure TfmCA020.GetPrevValue;
begin
  inherited;
  rPrevPayCode := qyMaster.FieldByName('PayCode').AsFloat ;
  sSaleCode := qyMaster.FieldByName('SaleCode').AsString;
end;

procedure TfmCA020.qyMasterUpdateRecord(DataSet: TDataSet;
  UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
var
  fNewAmount, fOldAmount,fPayCode : Extended;
  sLastDeliveryDate, sCustomerID : String;
begin
  inherited;
  fNewAmount := 0;
  fOldAmount := 0;
  case UpdateKind of
    ukInsert :
      begin
        fPayCode :=  DataSet.FieldByName('PayCode').NewValue;
        InsertIntoSaleCardStock(fPayCode);  //复制到销售点卡数据苦
        UpdatePayCite(fPayCode);            //修改缴费编号,使之不能被引用
      end;
    ukModify :
      begin
      end;
    ukDelete :
      begin
      end;
  end;
end;

procedure TfmCA020.sbSelectClick(Sender: TObject);
begin
  inherited;
//
end;

procedure TfmCA020.qyDetailCARDPARVALUEValidate(Sender: TField);
begin
  inherited;
  //CalcSalesAmount;
end;

procedure TfmCA020.qyDetailCARDQUANTITYValidate(Sender: TField);
begin
  inherited;
  //CalcSalesAmount;
end;

procedure TfmCA020.qyDetailAMOUNTValidate(Sender: TField);
begin
  inherited;
  //CalcSalesAmount;
end;

procedure TfmCA020.qyPayBeforeOpen(DataSet: TDataSet);
begin
  inherited;
  with qyPay do
  begin
    ParamByName('SaleCode').AsString :=
      qyMaster.FieldByName('SaleCode').AsString;
    ParamByName('bCite').AsString := '0';
  end;  
end;

procedure TfmCA020.qyDetailAfterPost(DataSet: TDataSet);
begin
  inherited;
  CalcAmount;
end;

procedure TfmCA020.qyDetailAfterDelete(DataSet: TDataSet);
begin
  inherited;
  CalcAmount;
end;

procedure TfmCA020.ED2Exit(Sender: TObject);
begin
  inherited;
  DBEdit4.Text := floattostr(GetPayMoney( ED2.Field.AsFloat));
end;

procedure TfmCA020.ED1Exit(Sender: TObject);
begin
  inherited;
  DBEdit8.Text := GetSaleName(ED1.Text);
end;

procedure TfmCA020.qyMasterAfterPost(DataSet: TDataSet);
begin
  inherited;
  //sbAppendClick(sbAppend);
end;

procedure TfmCA020.qyDetailCARDTYPEChange(Sender: TField);
begin
  inherited;
  //面值
  gdDetail.Columns[3].PickList.Clear;
  with qyTemp do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select CardParValue from Pwpt_CardType where bused = ''1'' ');
    SQL.Add(' and CardType = :CardType order by CardParValue');
    parambyname('CardType').AsString := qyDetail.fieldbyname('CardType').AsString;
    Open;
  end;

  while  not qyTemp.Eof do
  begin
    gdDetail.Columns[3].PickList.Add(qyTemp.fieldbyname('CardParValue').AsString);
    qyTemp.Next;
  end;
  if gdDetail.Columns[3].PickList.Count > 0 then
     qyDetail.FieldByName('CardParValue').AsString := gdDetail.Columns[3].PickList.strings[0]
  else
     qyDetail.FieldByName('CardParValue').AsFloat := 0;
end;

end.

⌨️ 快捷键说明

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