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

📄 pm_enter_purchaseapplytoorder.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 2 页
字号:
                                 inttostr(iRecord)+')';
            AdoQry_Tmp.ExecSQL;
            Edit;
            fieldbyname('iScreatePo').asinteger:=1;
            fieldbyname('TmpField').asinteger:=0;
            {当采购单为委外加工时生成委外领料清单}
            if PoType=1 then
              NewAutoBuildOpListOrder(DBConnect,PoNo,IntToStr(iRecord),GetCode(fieldbyname('ItemCode').AsString),0,PQty);
           {更新PurChaseApply表的iScreatePo字段}
            AdoQry_Tmp.Close;
            AdoQry_Tmp.Sql.Text:='Update '+IifString(fieldbyname('TabFlag').AsInteger=0,'PurChaseApply','PurchaseApplyAssign')+
                          ' set iScreatePo=1,'+
                          '     PoNo='+QuotedStr(PoNo)+','+
                          '     PoLineNo='+IntToStr(IRecord) +
                          ' where ToDate='''+Trim(fieldbyname('ToDate').asString)+''''+
                          ' and ItemCode='''+fieldbyname('ItemCodeO').asstring+''''+
                          IIFString(fieldbyname('TabFlag').AsInteger=1,' and VendorCode='+QuotedStr(fieldbyname('VendorCodeO').AsString),' ')+
                          ' and Convert(varchAr,SSReleaseDate,102)='''+Trim(datetostr(fieldbyname('SSReleaseDate').asDatetime))+'''';
            AdoQry_Tmp.execSQL;
                            //记录数+1;
          end
          else
        {供应商,制购码,采购人员有改变时插入采购单表头数据}
          begin
            if fieldbyname('PmCode').asinteger=2 then
              PoType:=1
            else
              PoType:=0;
              {生成采购单}
            AutoPoNo:='P'+Trim(Copy(FormatDateTime('yyyy.mm.dd',Now),3,2))+Trim(Copy(FormatDateTime('yyyy.mm.dd',Now),6,2));
            PoNo:=GetNo(DBConnect,AutoPoNo,'PO');
            AdoQry_Tmp.Close;
            AdoQry_Tmp.Sql.Text:='insert Po('+
                      'PoNo,'+
                      'VendorCode,'+
                      'PoType,'+
                      'Podate,'+
                      'PoTaxRate_Percent,'+
                      'CurrencyCode,'+
                      'EmployeeCode,'+
                      'PoRemArk,'+
                      'PcNo,'+
                      'CreateEmpolyeeCode'+
                      ')'+
                      'Values('+
                      ''''+PoNo+''','+
                      ''''+fieldbyname('VendorCodeO').asstring+''','+
                      inttostr(PoType)+','+
                      'Convert(varchAr,Getdate(),102),'+
                      fieldbyname('PcTaxRate_Percent').asstring+','+
                      ''''+fieldbyname('CurrencyCode').asstring+''','+
                      ''''+fieldbyname('EmployeeCode').asstring+''','+
                      ''''','+
                      ''''+PcNo+''','+
                      ''''+UserCode+''')';
            AdoQry_Tmp.execsql;
            AdoQry_Tmp.Close;
            AdoQry_Tmp.SQL.Text:='insert #TmpPo123456 ('+
                               'Pono,'+
                               'VendorCode,'+
                               'PmCode,'+
                               'EmployeeCode,'+
                               'ID)'+
                               'Values('+
                               ''''+PoNo+''','+
                               ''''+fieldbyname('VendorCodeO').asstring+''','+
                               fieldbyname('PmCode').asstring+','+
                               ''''+fieldbyname('EmployeeCode').asstring+''','+
                               '1)';
            AdoQry_Tmp.ExecSQL;
            {插入表体数据}
            if fieldbyname('FormalPricePass').asstring='1' then
               PRefPrc:=0
            else
               PRefPrc:=1;
            PQty:=fieldbyname('PlanQty').asfloat;
            if PQty=null then
              PQtyStr:='0'
            else
              PQtyStr:=floattostr(PQty);
            iRecord:=1;
            AdoQry_Tmp.Close;
            AdoQry_Tmp.Sql.Text:='Insert PoLine('+
                               'PoNo,'+
                               'PoLineNo,'+
                               'ItemCode,'+
                               'PoLineDate,'+
                               'PoReferencedPrice,'+
                               'PoLineStatus,'+
                               'PoNoTaxPrice, '+
                               'PoTaxPrice, ' +
                               'PoNoTaxAmount, '+
                               'PoTaxAmount , '+
                               'PoQty,'+
                               'PoNoFinishQty,'+
                               'POStArtWorkDate)'+
                               'Values('+
                               ''''+PoNo+''','+
                               inttostr(iRecord)+','+
                               ''''+fieldbyname('ItemCodeO').asstring+''','+
                               QuotedStr(fieldbyname('PlanReleaseDate').AsString)+','+
                               inttostr(PRefPrc)+','+
                               '5,'+
                               fieldbyname('PoNoTaxPrice').AsString+','
                               +fieldbyname('PoTaxPrice').AsString+','
                               +fieldbyname('PoNoTaxPrice').AsString+'*'+PQtyStr+','
                               +fieldbyname('PoTaxPrice').AsString+'*'+PQtyStr+',' +
                               PQtyStr+','+
                               PQtyStr+','+
                               ''''+fieldbyname('PlanDueDate').asstring+''')';
            AdoQry_Tmp.ExecSQL;
            Edit;
            fieldbyname('iScreatePo').asinteger:=1;
            fieldbyname('TmpField').asinteger:=0;
            {更新PurChaseApply表的iScreatePo字段}
            AdoQry_Tmp.Close;
            AdoQry_Tmp.Sql.Text:='Update '+IIFString(fieldbyname('TabFlag').AsInteger=0,'PurChaseApply','PurchaseApplyAssign')+
                          ' set iScreatePo=1,'+
                          '     PoNo='+QuotedStr(PoNo)+','+
                          '     PoLineNo='+IntToStr(IRecord)+
                          ' where ToDate='''+Trim(fieldbyname('ToDate').asstring)+''''+
                          ' and ItemCode='''+fieldbyname('ItemCodeO').asstring+''''+
                          IIFString(fieldbyname('TabFlag').AsInteger=1,' and VendorCode='+QuotedStr(fieldbyname('VendorCodeO').AsString),' ')+
                          ' and Convert(varchAr,SSReleaseDate,102)='''+Trim(Datetostr(fieldbyname('SSReleaseDate').asDateTime))+'''';
            AdoQry_Tmp.execSQL;
            if PoType=1 then
              NewAutoBuildOpListOrder(DBConnect,PoNo,inttostr(iRecord),GetCode(fieldbyname('ItemCode').AsString),0,PQty);
            {初始下一采购单数据}
            //VendorCode:=Trim(fieldbyname('VendorCodeO').asstring);
            //EmployeeCode:=Trim(fieldbyname('EmployeeCode').asstring);
            //PoTaxRate_Percent:=fieldbyname('PcTaxRate_Percent').asstring;
            //CurrencyCode:=Trim(fieldbyname('CurrencyCode').asstring);
            PmCode:=fieldbyname('PmCode').asinteger;
            PcNo:=Trim(fieldbyname('PcNo').asstring);
          end;
        end;
      except
        SucTrans:=False;
        DispInfo('数据保存出现错误!'+#13+#10+'可能是该记录已经被其他数据引用!',1);
        AdoQry_Tmp.Connection.RollBackTrans;
      end;
      if SucTrans then
        AdoQry_Tmp.Connection.CommitTrans;
      next;
    end;
  end;
  try
    with AdoQry_Tmp do
    begin
      Close;
      sql.Text:='drop table #TmpPo123456';
      ExecSQL;
    end;
  except
  end;
end;

procedure TFrm_Pm_Enter_PurchaseApplyToOrder.FormDestroy(Sender: TObject);
begin
  inherited;
  Frm_Pm_Enter_PurchaseApplyToOrder:=nil;
end;

procedure TFrm_Pm_Enter_PurchaseApplyToOrder.DBGridEhCellClick(
  Column: TColumnEh);
begin
  inherited;
  {if DBGridEh.DataSource.DataSet.IsEmpty then
    abort;
  if DBGridEh.DataSource.DataSet.fieldbyname('iScreatepo').asinteger=1 then
  begin
    abort;
  end;
  //if not(uppercase(Trim(DBGridEh.DataSource.DataSet.Fields[DBGridEh.SelectedIndex].FieldName))=UpperCase('TmpField')) then
  //  abort;
  if DBGridEh.DataSource.DataSet.fieldbyname('VendorCode').asstring='' then
  begin
    DispInfo('该记录没有供应商,请分配好供应商!',1);
    abort;
  end;
  if DBGridEh.DataSource.DataSet.fieldbyname('PmCode').asinteger=null then
  begin
    DispInfo('该记录没有制购码,请在物料主文件中设置!',1);
    abort;
  end;
  if DBGridEh.DataSource.DataSet.fieldbyname('EmployeeCode').asstring='' then
  begin
    DispInfo('该记录没有采购员,请在物料主文件中设置!',1);
    abort;
  end; }
end;


procedure TFrm_Pm_Enter_PurchaseApplyToOrder.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  Try
    ExecuteSql(AdoQry_Tmp,'drop table #PCTmp',1);
  except
  end;
  Try
    ExecuteSql(AdoQry_Tmp,'drop table #TmpPurchaseApply',1);
  except
  end;
  ExecuteSql(AdoQry_Tmp,'Update PurchaseApply set TmpField=0',1);
end;

procedure TFrm_Pm_Enter_PurchaseApplyToOrder.DBGridEhTitleClick(
  Column: TColumnEh);
var
  BookStr:String;
begin
  inherited;
  If Trim(Column.Title.Caption)<>'标识' Then
    Abort;
  EditFlag:=True;
  with AdoQry_Main do
  if not isempty then
  begin
    DisableControls;
    BookStr:=BookmArk;
    if not flag then
    begin
      First;
      while not eof do
      begin
        Edit;
        if (fieldbyname('iScreatePo').asinteger<>1)and(fieldbyname('VendorCode').asstring<>'')
        and(fieldbyname('EmployeeCode').asstring<>'')and(fieldbyname('VendorCode').asstring<>'') then
          fieldbyname('TmpField').asinteger:=1;
        next;
      end;
    end
    else
    begin
      First;
      while not eof do
      begin
        Edit;
        fieldbyname('TmpField').asinteger:=0;
        next;
      end;
    end;
    try
      BookmArk:=BookStr;
    Except
    end;
    EnableControls;
  end;
  EditFlag:=False;
  Flag:=not Flag;
end;

procedure TFrm_Pm_Enter_PurchaseApplyToOrder.FormCreate(Sender: TObject);
begin
  inherited;
  Flag:=False;
end;

procedure TFrm_Pm_Enter_PurchaseApplyToOrder.AdoQry_MainBeforeEdit(
  DataSet: TDataSet);
begin
  inherited;
  if DBGridEh.DataSource.DataSet.IsEmpty then
    abort;
  if not EditFlag then
  begin
    if DBGridEh.DataSource.DataSet.fieldbyname('iScreatepo').asinteger=1 then
    begin
      abort;
    end;
  //if not(uppercase(Trim(DBGridEh.DataSource.DataSet.Fields[DBGridEh.SelectedIndex].FieldName))=UpperCase('TmpField')) then
  //  abort;
    if DBGridEh.DataSource.DataSet.fieldbyname('VendorCode').asstring='' then
    begin
      DispInfo('该记录没有供应商,请分配好供应商!',1);
      abort;
    end;
    if DBGridEh.DataSource.DataSet.fieldbyname('PmCode').asinteger=null then
    begin
      DispInfo('该记录没有制购码,请在物料主文件中设置!',1);
      abort;
    end;
    if DBGridEh.DataSource.DataSet.fieldbyname('EmployeeCode').asstring='' then
    begin
      DispInfo('该记录没有采购员,请在物料主文件中设置!',1);
      abort;
    end;
  end;
end;

procedure TFrm_Pm_Enter_PurchaseApplyToOrder.DBGridEhGetCellParams(
  Sender: TObject; Column: TColumnEh; AFont: TFont; var Background: TColor;
  State: TGridDrawState);
begin
  inherited;
  if AdoQry_Main.fieldbyname('iScreatePo').asinteger=1 then
    AFont.Color:=CLRed;
end;

end.

⌨️ 快捷键说明

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