inv_otherin_b.pas

来自「一个MRPII系统源代码版本」· PAS 代码 · 共 1,071 行 · 第 1/3 页

PAS
1,071
字号
                                   tmp_InvBillnotaxAmount+','+
                                   tmp_InvBillPricec+','+
                                   tmp_InvBillAmountc+','+
                                   tmp_InvBillnotaxPricec+','+
                                   tmp_InvBillnotaxAmountc+')' );
        AdoQry_tmp.ExecSQL;

        //更改当前库存  更改Item表的库存数据
       { UpdateInv(AdoQry_tmp,
                  tmp_WhCode,
                  tmp_WhPositionCode,
                  fieldbyname('ItemCode').asstring,
                  '('+fieldbyname('InvBillqty').asstring+')',
                  NeedChangePrice); }

      Tempstr:=UpdateInv(AdoQry_tmp,
                  tmp_WhCode,
                  tmp_WhPositionCode,
                  fieldbyname('ItemCode').asstring,
                  '('+fieldbyname('InvBillqty').asstring+')',
                  NeedChangePrice,True);
      if Tempstr<>'' then
      begin
        //DispStr:=Tempstr;
        Abort;
      end;

        //更改批次库存数量
        if fieldbyname('Batchno').asstring<>'' then
        begin
          ChangeBatchInv(AdoQry_tmp,fieldbyname('Batchno').asstring,
                         'R',
                         medt_Date.text,
                         tmp_WhCode,
                         tmp_WhPositionCode,
                         fieldbyname('InvBillqty').asfloat);
        end;
        next;
      end;
    end;
    if OtherIncheck=0 then        //是否需要核价,如果否,则
    begin
      //更改当前应收应付
      with AdoQry_tmp do
      begin
        Close;
        sql.clear;
        sql.Add('select ChangeAp from BillType2 where BillType2Code='''+getCode(cmbbx_BillType2Code.text)+'''');
        open;
        if (fieldbyname('ChangeAp').asinteger=1) and (cmbbx_OutType.text='供应商') then
        begin
          Close;
          sql.clear;
          sql.Add('if not exists (select VendorCode '+
                                  ' from CurrentAp '+
                                  ' where VendorCode='''+Extedt_OutCode.text+''' and '+
                                       '  currencyCode='''+currencyCode+''') '+
                  ' insert CurrentAp(VendorCode,currencyCode) '+
                            ' Values('''+Extedt_OutCode.text+''','''+currencyCode+''') '+
                  ' update CurrentAp '+
                  '    set ApNoInvoice=ApNoInvoice+'+floattostr(Amount)+
                  ' where VendorCode='''+Extedt_OutCode.text+''' and '+
                  '       currencyCode='''+currencyCode+''' ');
          execsql;
        end;
      end;
    end;
    AdoQry_Body.Connection.CommitTrans;
    //状态控制
    //-----------
    AdoQry_Body.EnableControls ;
    Billmemo:=Extedt_memo.text;
    BillwhCode:=getCode(cmbbx_WhCode.text);
    BillWhPositionCode:=getCode(cmbbx_WhPositionCode.text);
    BillBillType2Code:=getCode(cmbbx_BillType2Code.text);
    BilloutType:=getCode(Cmbbx_OutType.text);
    BilloutCode:=Extedt_OutCode.text;
    BilloutName:=lbl_OutName.text;
    BillLoginDate:=medt_Date.text;
    Frm_Inv_OtherIn_H.InvBillid:=Billid;
    act_insertline.Enabled :=False;
    act_Deleteline.Enabled :=False;
    act_Save.Enabled :=False;
    act_Modify.Enabled :=False;
//    DispInfo('保存成功!',3);
    //---------
  except
    begin
      AdoQry_Body.Connection.RollBackTrans;
      AdoQry_Body.EnableControls ;
      if not BeforeSaveError then
      begin
        DispInfo(' 存盘不成功,请稍后再试! ',1);
        abort;
      end;
    end;
  end;
end;



procedure TFrm_Inv_OtherIn_B.DateCheck(Sender: TObject);
begin
  inherited;
  //日期是否为结帐日期
  if not whclsperiodcheck(AdoQry_tmp,getCode(cmbbx_WhCode.text),copy(medt_Date.text,1,7)) then
  begin
    medt_Date.setfocus;
    abort;
  end;
end;

procedure TFrm_Inv_OtherIn_B.Act_QuitExecute(Sender: TObject);
begin
//  inherited;
  Close;
end;

procedure TFrm_Inv_OtherIn_B.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
 // inherited;
 //退出检验
  if(Act_Save.Enabled)then
  begin
    if(DispInfo('数据有改动,需要保存吗?',2)='y')then
    begin
      Act_SaveExecute(Sender);
      Self.ModalResult:=mrOk;
    end
    else
    begin
      if(AdoQry_Head.State in [dsInsert,dsEdit])then
        AdoQry_Head.Cancel;
      Self.ModalResult:=mrCancel;
    end;
  end
  else
  begin
    if(AdoQry_Head.State in [dsInsert,dsEdit])then
      AdoQry_Head.Cancel;
    Self.ModalResult:=mrOk;
  end;

end;

procedure TFrm_Inv_OtherIn_B.cmbbx_WhCodeChange(Sender: TObject);
begin
  inherited;
  initcmbbx_WhPositionCode(getCode(cmbbx_WhCode.text));
end;

procedure TFrm_Inv_OtherIn_B.Extedt_OutCode1KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  if key=vk_F9 then
  begin
    if cmbbx_OutType.text='供应商' then  VendorHint(sender,key,shift);
    if cmbbx_OutType.text='部门' then  DeptHint(sender,key,shift);
  end


end;

procedure TFrm_Inv_OtherIn_B.AdoQry_BodyAfterPost(DataSet: TDataSet);
begin
  inherited;
  //为正负向参数付值
  IoType:=AdoQry_Body.fieldbyname('InvBillqty').asfloat;
end;

procedure TFrm_Inv_OtherIn_B.AdoQry_BodyBeforePost(DataSet: TDataSet);
begin
  inherited;
  //调用正负同向检验程序
  checkIoType;
end;

procedure TFrm_Inv_OtherIn_B.Act_PreviewExecute(Sender: TObject);
begin
  //inherited;
  if Trim(cmbbx_WhCode.text)='' then
  begin
    DispInfo('仓库不能为空!',3);
    abort;
  end;
  BillPrint(AdoQry_Tmp.Connection,GetCode(cmbbx_WhCode.text),Extedt_Billno.text,Param1,ModuleCode,True,False,True,'');
end;

procedure TFrm_Inv_OtherIn_B.Act_PrintExecute(Sender: TObject);
begin
 //inherited;
   if Trim(cmbbx_WhCode.text)='' then
   begin
     DispInfo('仓库不能为空!',3);
     abort;
   end;
  IsAfterprint:=True;
  BillPrint(AdoQry_Tmp.Connection,GetCode(cmbbx_WhCode.text),Extedt_Billno.text,Param1,ModuleCode,False,False,True,'');
  IsAfterprint:=False;
end;

procedure TFrm_Inv_OtherIn_B.cmbbx_BillType2CodeExit(Sender: TObject);
begin
  inherited;
  if Trim(cmbbx_BillType2Code.text)='' then
  begin
    DispInfo('请选择入库类型!',1);
    twincontrol(sender).setfocus;
    abort;
  end;
end;

procedure TFrm_Inv_OtherIn_B.cmbbx_OutTypeExit(Sender: TObject);
begin
  inherited;
  //入库对象为空,则自动让入库对象代码,对象名称清空
  if Trim(cmbbx_OutType.text)='' then
  begin
    lbl_OutName.text:='';
    Extedt_OutCode.Text:='';
  end;
end;

procedure TFrm_Inv_OtherIn_B.Act_InsertLineExecute(Sender: TObject);
begin
//把Detail中要用到的参数从BODY传过去
  Frm_Entry_Detail.SetFormParam(cmbbx_OutType.text,Extedt_OutCode.text,currencyCode,Vendortaxrate_Percent,ExchRate,'');
  TFrm_Inv_OtherIn_D(Frm_Entry_Detail).setformParam1(getCode(cmbbx_WhCode.text),getCode(cmbbx_WhPositionCode.text));
  inherited;
end;

procedure TFrm_Inv_OtherIn_B.Act_ModifyExecute(Sender: TObject);
begin
  //把Detail中要用到的参数从BODY传过去
  Frm_Entry_Detail.SetFormParam(cmbbx_OutType.text,Extedt_OutCode.text,currencyCode,Vendortaxrate_Percent,ExchRate,'');
  TFrm_Inv_OtherIn_D(Frm_Entry_Detail).setformParam1(getCode(cmbbx_WhCode.text),getCode(cmbbx_WhPositionCode.text));
  inherited;
end;

procedure TFrm_Inv_OtherIn_B.FormActivate(Sender: TObject);
begin
  if IsAfterprint=False then
  begin
    inherited;
  end;
end;

procedure TFrm_Inv_OtherIn_B.Act_NewExecute(Sender: TObject);
begin
  IsAfterprint:=False;
  issecondinsert:=True;
  outTypeposition:=cmbbx_OutType.ItemIndex;
  outCode:=Extedt_OutCode.Text;
  outName:=lbl_OutName.text;
  inherited;

end;

procedure TFrm_Inv_OtherIn_B.Extedt_OutCodeExit(Sender: TObject);
var
  currencyName:string;
begin
  //inherited;
//如果是供应商,则选出供应产的税率,币种,如果币种为外币,还要取当前最近月份的汇率
//如果是部门或空,则不用取币种或税率
  if cmbbx_OutType.text='供应商' then
  begin
    UsableVendorCodecheck(sender);
    with AdoQry_tmp do
    begin
      Close;
      sql.clear;
      sql.Add(' select Vendor.currencyCode,Vendor.VendorName,'+
              ' currency.currencyCode,currency.currencyName,'+
              ' Vendortaxrate_Percent '+
              ' from Vendor '+
              '  left join currency '+
              '   on Vendor.currencyCode=currency.currencyCode '+
              '  where Vendor.VendorCode='''+Extedt_OutCode.text+'''');
      open;
      lbl_OutName.text:=fieldbyname('VendorName').asstring;
      currencyCode:=fieldbyname('currencyCode').asstring;
      Vendortaxrate_Percent:=fieldbyname('Vendortaxrate_Percent').asstring;
      lb_Vendortaxrate_Percent.text:=fieldbyname('Vendortaxrate_Percent').asstring+'%';
      lbl_CurrencyName.text:=fieldbyname('currencyCode').asstring+' '+fieldbyname('currencyName').asstring;
      currencyName:=fieldbyname('currencyCode').asstring+' '+fieldbyname('currencyName').asstring;
      if currencyCode<>'00' then
      begin
        Close;
        sql.clear;
        sql.Add('select ExchRate from ExchRate where exchMonth='''+copy(medt_Date.text,1,7)+''' and currencyCode='''+currencyCode+'''');
        open;
        if not eof then
        begin
          ExchRate:=fieldbyname('ExchRate').asstring;
        end
        else
        begin
          //这里将存在一个问题,暂不考虑
          DispInfo('该供应商主控货币'+currencyCode+' '+currencyName+'在'+copy(medt_Date.text,1,7)+' 月没有定义!',3);
          ExchRate:='1';
        end;
      end;
    end;
  end
  else
  begin
    if cmbbx_OutType.text='部门' then
    begin
      DeptCodecheck(sender);
      with AdoQry_tmp do
      begin
        Close;
        sql.clear;
        sql.text:=' select DeptName from Dept where DeptCode='''+Trim(Extedt_OutCode.text)+''' ';
        open;
        lbl_OutName.text:=fieldbyname('DeptName').asstring;
      end;
    end
    else
    begin
      lbl_OutName.text:='';
      Extedt_OutCode.Text:='';
    end;
    lb_Vendortaxrate_Percent.text:='0'+'%';
    Vendortaxrate_Percent:='0';
  end;
  Frm_Entry_Detail.SetFormParam(cmbbx_OutType.text,Extedt_OutCode.text,currencyCode,Vendortaxrate_Percent,ExchRate,medt_Date.text);
  TFrm_Inv_OtherIn_D(Frm_Entry_Detail).setformParam1(getCode(cmbbx_WhCode.text),getCode(cmbbx_WhPositionCode.text));
end;


procedure TFrm_Inv_OtherIn_B.Extedt_OutCodeKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  if key=vk_F9 then
  begin
    if cmbbx_OutType.text='供应商' then  VendorHint(sender,key,shift);
    if cmbbx_OutType.text='部门' then  DeptHint(sender,key,shift);
  end
end;

procedure TFrm_Inv_OtherIn_B.Extedt_OutCodeButtonClick(Sender: TObject);
begin
  inherited;
  if cmbbx_OutType.text='供应商' then
    CommonHint(Sender,AdoQry_Tmp,'VendorName','供应商名称','VendorCode',
      '供应商代码','Vendor','VendorUsable=1');
  if cmbbx_OutType.text='部门' then
    CommonHint(Sender,AdoQry_Tmp,'DeptName','部门名称','DeptCode','部门代码','Dept');
end;

end.

⌨️ 快捷键说明

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