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

📄 sal_enter_saleorder.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 4 页
字号:
  end;
end;

procedure TFrm_Sal_Enter_SaleOrder.AdoQry_BodyAfterPost(DataSet: TDataSet);
var
  TotalNoTaxAmount,TotalTaxAmount:double;
  BookMArk:String;
begin
  inherited;
  TotalNoTaxAmount:=0;
  TotalTaxAmount:=0;
  if  AdoQry_Body.RecordCount >0 then
    BookMArk:=AdoQry_Body.BookMArk;
  AdoQry_Body.First;
  while not AdoQry_Body.Eof do
  begin
     TotalTaxAmount:= TotalTaxAmount +AdoQry_Body.fieldbyname('TaxAmount').asfloat;
     TotalNoTaxAmount:= TotalNoTaxAmount +AdoQry_Body.fieldbyname('NoTaxAmount').asfloat;
     AdoQry_Body.Next;
  end;
 if  AdoQry_Body.RecordCount >0 then
    AdoQry_Body.BookMArk:=BookMArk;

  Edt_TotalNoTaxAmount.Text:= floattostr(TotalNoTaxAmount);
  Edt_TotalTaxAmount.Text:= floattostr(TotalTaxAmount);
end;

procedure TFrm_Sal_Enter_SaleOrder.Act_ModifyExecute(Sender: TObject);
begin
If Status<>'Add' Then
  begin
    if AdoQry_Body.fieldbyname('SloLineStatus').AsInteger <> 5 then
    begin
      DispInfo('行状态不为准备状态不能修改!',3);
      abort;
    end;
  end;
  TaxRate_Percent:=Edt_TaxRate_Percent.Text;
  CustomerCode:=Edt_CustomerCode.Text;
  CurrencyCode := Edt_CurrencyCode.Text;
  inherited;
end;

procedure TFrm_Sal_Enter_SaleOrder.Edt_TaxRate_PercentExit(
  Sender: TObject);
begin
  inherited;
  IF Trim(Edt_TaxRate_Percent.Text)='' Then
     Edt_TaxRate_Percent.Text:='17';

  try
    Edt_TaxRate_Percent.Text:=FloatToStr(Strtofloat(Edt_TaxRate_Percent.Text));
  except
    DispInfo('销售税率输入错误!',3);
    TWincontrol(Sender).SetFocus;
    Abort;
  end;
  If Strtofloat(Edt_TaxRate_Percent.Text)<=0 Then
  begin
    DispInfo('销售税率不能小于或等于0!',3);
    TWincontrol(Sender).SetFocus;
    Abort;
  end;
end;


procedure TFrm_Sal_Enter_SaleOrder.Edt_SaleTypeCodeKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  If (Key=120) Then
    CommonHint(Sender,AdoQry_Body,'SaleTypeName','销售类型描述','SaleTypeCode','销售类型代码',
            'SaleType');
end;

procedure TFrm_Sal_Enter_SaleOrder.Edt_SaleDeptCodeExit(Sender: TObject);
begin
  inherited;
  if Trim(Edt_SaleDeptCode.Text)<> '' then
  begin
    DeptCodeCheck(sender);
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.clear;
    AdoQry_Tmp.SQL.Text:=' Select DeptCode,DeptName from Dept '
                        +'          where DeptCode= '''+Edt_SaleDeptCode.Text+''' ';
    AdoQry_Tmp.Open;
    Edt_SaleDeptName.Text := AdoQry_Tmp.fieldbyname('DeptName').AsString;
  end
  else
    Edt_SaleDeptName.Text :='';
end;

procedure TFrm_Sal_Enter_SaleOrder.Edt_SaleEmployeeCodeExit(
  Sender: TObject);
begin
  inherited;
  if  Edt_SaleEmployeeCode.Text <>'' then
  begin
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.clear;
    AdoQry_Tmp.SQL.Text:=' Select EmployeeCode,EmployeeName from Employee '
                        +'          where EmployeeCode= '''+Edt_SaleEmployeeCode.Text+''' ';
    AdoQry_Tmp.Open;
    if not AdoQry_Tmp.Eof then
    begin
      Edt_SaleEmployeeName.Text := AdoQry_Tmp.fieldbyname('EmployeeName').AsString;
    end
    else
    begin
      DispInfo('销售员代码错误,请重新输入',1);
      TWinControl(Sender).SetFocus;
      Abort;
    end;

  end
  else
    Edt_SaleEmployeeName.Text:='';
end;

procedure TFrm_Sal_Enter_SaleOrder.Act_InsertLineExecute(Sender: TObject);
var MaxLineNo : Integer;
    BookMArk : String;
begin
  IF Trim(Edt_CustomerCode.Text)='' Then
  begin
    DispInfo('销售客户不能为空!',3);
    Edt_CustomerCode.SetFocus;
    Abort;
  end;

  IF Trim(Edt_TaxRate_Percent.Text)='' Then
  begin
    DispInfo('销售税率不能为空!',3);
    Edt_TaxRate_Percent.SetFocus;
    Abort;
  end;

  IF Trim(Edt_CurrencyCode.Text)<>'' Then
    CurrencyCodeCheck(Edt_CurrencyCode);
  AdoQry_Tmp.Close;
  AdoQry_Tmp.SQL.clear;
  AdoQry_Tmp.SQL.Text:=' Select CurrencyCode,CurrencyName,IsMaster from Currency '
                      +'          where CurrencyCode= '''+Edt_CurrencyCode.Text+''' ';
  AdoQry_Tmp.Open;
  Edt_CurrencyName.Text := AdoQry_Tmp.fieldbyname('CurrencyName').AsString;
  ExchRate := 1;
  If AdoQry_Tmp.fieldbyname('IsMaster').AsInteger<>1 then {如果是本位币则不用判断是否有外币汇率资料}
  begin
    ExecuteSql(AdoQry_Tmp,' select * from ExchRate  '
                         + '  where CurrencyCode= '+QuotedStr(Edt_CurrencyCode.Text)
                         + '    and ExchMonth= '+QuotedStr(copy(Medt_CreateDate.Text,1,7)),0);
    if AdoQry_tmp.RecordCount=0 then 
    begin
      DispInfo('没有该货币'+Copy(Medt_CreateDate.Text,1,7)+'月的外币汇率!',3);
      If Edt_CurrencyCode.CanFocus then  Edt_CurrencyCode.SetFocus;
      Abort;    
    end;
    ExchRate := AdoQry_Tmp.fieldbyname('ExchRate').AsFloat;
  end;
  TaxRate_Percent:=Edt_TaxRate_Percent.Text;
  CustomerCode:=Edt_CustomerCode.Text;
  CurrencyCode := Edt_CurrencyCode.Text;
  Frm_Sal_Enter_SaleOrder_D.LineNo := AdoQry_Body.RecordCount;
  If Pos('Edit',Status)>0 then
  begin
    MaxLineNo := 0;
    BookMArk := AdoQry_Body.BookmArk;
    AdoQry_Body.DisableControls;
    AdoQry_Body.First;
    While Not  AdoQry_Body.Eof do
    begin
      If AdoQry_Body.fieldbyname('SloLineNo').AsInteger>MaxLineNo then
      MaxLineNo := AdoQry_Body.fieldbyname('SloLineNo').AsInteger;
      AdoQry_Body.Next;
    end;
    AdoQry_Body.BookmArk := BookMArk;
    AdoQry_Body.EnableControls;
    Frm_Sal_Enter_SaleOrder_D.LineNo := MaxLineNo;
  end;
  inherited;
  If AdoQry_Body.RecordCount>0 then
  begin
    Edt_TaxRate_Percent.Enabled := False;
    Edt_CurrencyCode.Enabled:=False;
  end;
  
  Edt_SloNo.Enabled:=False;
end;

procedure TFrm_Sal_Enter_SaleOrder.GetCustomerItem(CustomerCode: String);
var
  SqlText:String;
begin
  SqlText:=' Select CustomerTaxRate_Percent,CustomerShipModeCode,ShipModeName,CustomerCurrencyCode,CurrencyName,'
          +'  CustomerPayTermCode,PayTermName,CustomerSaleTypeCode,SaleTypeName,'
          +'  CustomerSaleDeptCode,DeptName,CustomerSaleEmployeeCode,EmployeeName '
          +' From Customer '
          +' Left Join ShipMode  '
          +'   On Customer.CustomerShipModeCode=ShipMode.ShipModeCode'
          +' Left Join Currency  '
          +'   On Customer.CustomerCurrencyCode=Currency.CurrencyCode '
          +' Left Join PayTerm  '
          +'   On Customer.CustomerPayTermCode=PayTerm.PayTermCode  '
          +' Left Join SaleType'
          +'   On Customer.CustomerSaleTypeCode=SaleType.SaleTypeCode  '
          +' Left Join Dept   '
          +'   On Customer.CustomerSaleDeptCode=Dept.DeptCode   '
          +' Left Join Employee    '
          +'   On Customer.CustomerSaleEmployeeCode=Employee.EmployeeCode  '
          +' Where CustomerCode='''+CustomerCode+'''  ';
  AdoQry_Tmp.Close;
  AdoQry_Tmp.SQL.clear;
  AdoQry_Tmp.SQL.text:=SqlText;
  AdoQry_Tmp.Open;
  With AdoQry_Tmp do
  begin
{    if  Edt_TaxRate_Percent.Text='' then
    begin
}
      if (fieldbyname('CustomerTaxRate_Percent').AsInteger<>0)  then
        Edt_TaxRate_Percent.Text := fieldbyname('CustomerTaxRate_Percent').AsString
      else
        Edt_TaxRate_Percent.Text :='17';
//    end;    
{    if Trim(Edt_SaleDeptCode.Text)='' then
    begin
}
      Edt_SaleDeptCode.Text := fieldbyname('CustomerSaleDeptCode').asstring;
      Edt_SaleDeptName.Text := fieldbyname('DeptName').asstring;
//    end;
{    if Trim(Edt_ShipModeCode.Text)='' then
    begin
}
      Edt_ShipModeCode.Text := fieldbyname('CustomerShipModeCode').asstring;
      Edt_ShipModeName.Text := fieldbyname('ShipModeName').asstring;
//    end;
{    if Trim(Edt_SaleTypeCode.Text)='' then
    begin
}
      Edt_SaleTypeCode.Text := fieldbyname('CustomerSaleTypeCode').asstring;
      Edt_SaleTypeName.Text :=fieldbyname('SaleTypeName').AsString;
//    end;
{    if Trim(Edt_SaleEmployeeCode.Text)=''then
    begin
}
      Edt_SaleEmployeeCode.Text := fieldbyname('CustomerSaleEmployeeCode').asstring;
      Edt_SaleEmployeeName.Text := fieldbyname('EmployeeName').asstring;
//    end;
{    if Trim(Edt_PayTermCode.Text)='' then
    begin
}
      Edt_PayTermCode.Text := fieldbyname('CustomerPayTermCode').asstring;
      Edt_SaleTermName.Text := fieldbyname('PayTermName').asstring;
//    end;
{    if Trim(Edt_CurrencyCode.Text)='' then
    begin
}
      Edt_CurrencyCode.Text := fieldbyname('CustomerCurrencyCode').asstring;
      Edt_CurrencyName.Text := fieldbyname('CurrencyName').asstring;
//    end;
  end;

  SqlText:=' Select ShipAddresSCode,ShipAddressName From CustomerShipAddress '
           +' Where CustomerCode='''+CustomerCode+'''  ';
  AdoQry_Tmp.Close;
  AdoQry_Tmp.SQL.clear;
  AdoQry_Tmp.SQL.text:=SqlText;
  AdoQry_Tmp.Open;
  with AdoQry_Tmp do
  begin
{    if Trim(Edt_ShipAddresSCode.Text)='' then
    begin
} 
     Edt_ShipAddresSCode.Text := fieldbyname('ShipAddresSCode').asstring;
      Edt_ShipAddressName.Text := fieldbyname('ShipAddressName').asstring;
//    end;
  end;
end;


procedure TFrm_Sal_Enter_SaleOrder.Edt_CustomerCodeEnter(Sender: TObject);
begin
  inherited;
  Enter_CustomerCode:=Trim(Edt_CustomerCode.text);
end;

procedure TFrm_Sal_Enter_SaleOrder.Edt_ShipAddresSCodeButtonClick(
  Sender: TObject);
begin
  inherited;
  CommOnHint(Sender,AdoQry_Tmp,'ShipAddressName','发货地址名称','ShipAddresSCode',
             '发货地址代号',' CustomerShipAddress ',' CustomerCode= '''+Edt_CustomerCode.Text+'''');
end;

procedure TFrm_Sal_Enter_SaleOrder.Edt_PayTermCodeButtonClick(
  Sender: TObject);
begin
  inherited;
  CommOnHint(Sender,AdoQry_Tmp,'PayTermName','付款条款名称','PayTermCode',
             '付款条款代号',' PayTerm ');
end;

procedure TFrm_Sal_Enter_SaleOrder.Edt_ShipModeCodeButtonClick(
  Sender: TObject);
begin
  inherited;
  CommOnHint(Sender,AdoQry_Tmp,'ShipModeName','发货方式名称','ShipModeCode',
             '发货方式代号',' ShipMode ');
end;

procedure TFrm_Sal_Enter_SaleOrder.Edt_SaleTypeCodeButtonClick(
  Sender: TObject);
begin
  inherited;
    CommonHint(Sender,AdoQry_Body,'SaleTypeName','销售类型描述','SaleTypeCode','销售类型代码',
            'SaleType');
end;

procedure TFrm_Sal_Enter_SaleOrder.Act_SaveExecute(Sender: TObject);
begin
  inherited;
  Act_InsertLine.Enabled := False;
  Act_DeleteLine.Enabled := False;
end;

end.

⌨️ 快捷键说明

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