pod.cpp

来自「科思ERP部分源码及控件」· C++ 代码 · 共 337 行

CPP
337
字号
//--------------------------------------------------------------------------
#include <vcl.h>
#include "wnquery.h"
//--------------------------------------------------------------------------
#pragma hdrstop
#include "Pod.h"
#include "Poh.h"
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "SDComboBox"
#pragma resource "*.dfm"
TfrmPod  *frmPod;
//--------------------------------------------------------------------------
__fastcall TfrmPod::TfrmPod(TComponent* Owner, HWND chWnd, AnsiString ClassCode,AnsiString WhereStr)
        : TStdBaseForm(Owner,chWnd,ClassCode,WhereStr)

{
  InitControlGroup();
  btnOK->Enabled = false;
}

//--------------------------------------------------------------------------
__fastcall TfrmPod::TfrmPod(TComponent* Owner): TStdBaseForm(Owner)
{
InitControlGroup();
btnOK->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::btnOKClick(TObject *Sender)
{
  AnsiString sMemo;
  int ErrNum;
  try
  {
    StartWaitForm("正在生成采购单,请稍候......");
    if(sgPod->RowCount>1)
    {
     int j;
     j=comServer->ItemCount-1;
     if(j>=0)
     {
        comServer->LocateItemByIndex(j);
        j=StrToInt(GetDetailValue("PodLine"));
        j=j+1;
     }
     else
        j=1;
     try
     {
       for(int i=1;i<sgPod->RowCount;i++)
       {
           if(sgPod->Cells[1][i]=="√")
           {
               comServer->AddItem();
               SetDetailValue("PodLine",IntToStr(j));             //采购单行号
               SetDetailValue("PodCode",frmPoh->sePohCode->Text);             //采购单号
               SetDetailValue("PodGoods",sgPod->Cells[3][i]);
               SetDetailValue("GoodsName",sgPod->Cells[4][i]);
               SetDetailValue("GoodsSpec",sgPod->Cells[5][i]);
                                         //货物编码
               SetDetailValue("PodUnit",sgPod->Cells[6][i]);             //采购单位
               SetDetailValue("PodConvRate",sgPod->Cells[7][i]);         //换算比率
               SetDetailValue("PodFrom",sgPod->Cells[8][i]);             //需求来源
               if(sgPod->Cells[9][i] == "")
                throw Exception("请输入采购数量");
               SetDetailValue("PodQty",sgPod->Cells[9][i]);              //采购数量
               if(sgPod->Cells[10][i] == "")
                throw Exception("请输入采购单价");
               SetDetailValue("PodPrice",sgPod->Cells[10][i]);            //采购单价
               SetDetailValue("PodType","2");             //行类型
               SetDetailValue("PodFromCode",seRpohCode->Text);
               SetDetailValue("PodFromLine",sgPod->Cells[2][i]);
               SetDetailValue("PodStatus","1");           //订单行状态
               SetDetailValue("PodSendDate",sgPod->Cells[12][i]);         //发货日期
               SetDetailValue("PodRecDate",sgPod->Cells[12][i]);          //交货日期
               SetDetailValue("PodReqDate",sgPod->Cells[11][i]);          //需求日期
               SetDetailValue("PodLoc",sgPod->Cells[13][i]);              //需求货位
               SetDetailValue("PodDept",sgPod->Cells[14][i]);             //需求部门
               sMemo="来源于请购单'"+seRpohCode->Text+"'的第"+sgPod->Cells[2][i]+"行";
               SetDetailValue("PodDesc",sMemo);             //备注
               SetDetailValue("PodClose","0");            //结清标志
               SetDetailValue("PodCloseDate", TDateTime().CurrentDate().DateString());        //结清日期
               SetDetailValue("PodSo","");               //订单号
               SetDetailValue("PodSodLine","0");          //订单行号
               SetDetailValue("PodBatch","");            //批号
               SetDetailValue("PodAmt", sgPod->Cells[10][i].ToDouble()*sgPod->Cells[9][i].ToDouble());            //批号
               comServer->AddToObject();
               j=j+1;
           }
       }
     }
     catch(Exception &e)
     {
      comServer->FreeItem();
      this->ModalResult=0;
      throw Exception(e.Message);
     }
    }
  }
  __finally
  {
    EndWaitForm();
  }
  Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::btnCancelClick(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::InitControlGroup()
{
    sgPod->RowCount = 1;
    sePohSupply->Text=frmPoh->scPohSupply->ItemData[0];
    if(frmPoh->scPohSettleMode->ItemData[0]!="")
    sePodSettleMode->Text =frmPoh->scPohSettleMode->ItemData[0];
    if(frmPoh->scPohTaxCode->ItemData[0]!="")
    sePodTax->Text =frmPoh->scPohTaxCode->ItemData[0];
   // scPohSettleMode->ItemData[0]=frmPoh->scPohSettleMode->ItemData[0];
    //scPohSettleMode->ItemData[1]=frmPoh->scPohSettleMode->ItemData[1];
   // scPohTaxCode->ItemData[0]=frmPoh->scPohTaxCode->ItemData[0];
    //scPohTaxCode->ItemData[1]=frmPoh->scPohTaxCode->ItemData[1];
    sePohSupply->Enabled=false;
    seRpohCode->Text="";
}
//---------------------------------------------------------------------------

void __fastcall TfrmPod::FillGridWithData()
{
  TComResultSet *RsRpod;
  RsRpod=new TComResultSet(Handle, g_ClientHandle);
  AnsiString  ItemStr,s_SQL;
  s_SQL="  select goodsbuyer, goodsname ,goodsspec,";
  s_SQL+=" RpodLine,RpodCode,RpodGoodsCode,RpodUnitCode,RpodConvRate,RpodFrom,RpodQty,RpodPrice,RpodPQty,RpodReqDate,RpodRecDate,RpodLocCode,RpodDept  from sdrpod,sdgoods ";
  s_SQL+=" where rpodgoodscode=goodscode and RpodCode= '"+seRpohCode->Text+" '";
  s_SQL+=" and RpodClose = 0 and Rpodqty-rpodpqty>0 ";
  RsRpod->Close();
  RsRpod->Open("select parametercode,parametervalue from sdparameter where parametercode = '10302' and parametervalue =1","parametercode");
  if(RsRpod->RecordCount >0)
  s_SQL+=" and goodsbuyer = '"+g_sdUserCode+"'";
  //second filter for fill grid with data
  sgPod->RowCount=1;
  try
  {
    StartWaitForm("正在查询数据,请稍候......");
    RsRpod->Close();
    RsRpod->Open(s_SQL,"");
    while( RsRpod->Eof == false)
    {
     ItemStr = "\t"+AnsiString("") +
               "\t"+RsRpod->FieldByName("RpodLine")+
               "\t"+RsRpod->FieldByName("RpodGoodsCode")+
               "\t"+RsRpod->FieldByName("Goodsname")+
                "\t"+RsRpod->FieldByName("Goodsspec")+
               "\t"+RsRpod->FieldByName("RpodUnitCode")+
               "\t"+RsRpod->FieldByName("RpodConvRate")+
               "\t"+RsRpod->FieldByName("RpodFrom")+
               "\t"+AnsiString(RsRpod->FieldByName("RpodQty").ToDouble()-RsRpod->FieldByName("RpodPQty").ToDouble())+
               "\t"+RsRpod->FieldByName("RpodPrice")+
               "\t"+RsRpod->FieldByName("RpodReqDate")+
               "\t"+RsRpod->FieldByName("RpodRecDate")+
               "\t"+RsRpod->FieldByName("RpodLocCode")+
               "\t"+RsRpod->FieldByName("RpodDept");

     sgPod->AddItem(ItemStr);
     RsRpod->MoveNext();
    }
    RsRpod->Close();
  }
  __finally
  {
    EndWaitForm();
  }
  delete RsRpod;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::GetComObject(TComServer *comServerPtr)
{
 comServer = comServerPtr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::SetDetailValue(AnsiString fieldname,AnsiString Value)
{
 comServer->DataSet->SetDetailValue(fieldname,Value);
}

//---------------------------------------------------------------------------
AnsiString __fastcall TfrmPod::GetDetailValue(AnsiString fieldname)
{
  Variant vTmp;
  vTmp=comServer->DataSet->GetItemValue(fieldname);
  if(vTmp.IsNull())
   return "";
  else
   return AnsiString(vTmp);
}
//---------------------------------------------------------------------------

void __fastcall TfrmPod::sgPodDblClick(TObject *Sender)
{
    AnsiString SqlStr;
    if (sgPod->Row > 0 && sgPod->Col == 1)
    {
      if (sgPod->Cells[1][sgPod->Row] == "√")
      {
       sgPod->Cells[1][sgPod->Row] =  "";
       for (int i=1;i<sgPod->RowCount;i++)
       {
          if(sgPod->Cells[1][i]=="√")
          {
             btnOK->Enabled=true;
             break;
          }
          else
             btnOK->Enabled=false;
       }
      }
      else
      {
          sgPod->Cells[1][sgPod->Row] =  "√";
          btnOK->Enabled = true;
      }
    }
    //DONE: BUG NO.650 FIXED 9-4
    else if(sgPod->Col==13 && sgPod->Cells[1][sgPod->Row] == "√")
      {
        SqlStr="002[货位代码][货位名称]select loccode,locname from sdLoc,sdlg ";
        SqlStr+=" where lgLoccode=loccode and lggoodscode='"+sgPod->Cells[3][sgPod->Row]+"'";
//        if(g_sdQuality == false) //无需质量管理
          SqlStr+= " and LocType=1 order by locCode";
//        else                    //需要质量管理
//          SqlStr+= " and LocType=3 order by loccode";
        TfrmWnQuery *p;
        try
        {
          StartWaitForm("正在查询,请稍候...");
          p=new TfrmWnQuery(this,"货位查询",SqlStr);
        }
        __finally
        {
          EndWaitForm();
        }
        if(p->ShowModal()==mrOk)
        {
          sgPod->Cells[13][sgPod->Row]=p->ColData[1];
        }
        delete p;
      }
    else if(sgPod->Col==14 && sgPod->Cells[1][sgPod->Row] == "√")
      {
        SqlStr="002[部门代码][部门名称]select deptcode,deptname  from sddept order by deptCode ";
        TfrmWnQuery *p;
        try
        {
          StartWaitForm("正在查询,请稍候...");
          p=new TfrmWnQuery(this,"部门查询",SqlStr);
        }
        __finally
        {
          EndWaitForm();
        }
        if(p->ShowModal()==mrOk)
        {
          sgPod->Cells[14][sgPod->Row]=p->ColData[1];
        }
        delete p;
      }
    //=============END OF 650==================
}
//---------------------------------------------------------------------------

void __fastcall TfrmPod::bbSelAllClick(TObject *Sender)
{
  if(sgPod->RowCount <=1)
   return;
  for(int i=1;i<sgPod->RowCount;i++)
    sgPod->Cells[1][i] = "√";
  btnOK->Enabled = true;
}
//---------------------------------------------------------------------------

void __fastcall TfrmPod::bbSelNoneClick(TObject *Sender)
{
  for(int i=1;i<sgPod->RowCount;i++)
    sgPod->Cells[1][i] = "";
  btnOK->Enabled = false;
}
//---------------------------------------------------------------------------


void __fastcall TfrmPod::seRpohCodeButtonClick(TObject *Sender)
{
  AnsiString SqlStr;
  SqlStr="004[请购单号][请购日期][币种][采购员] select Rpohcode,Rpohdate,Currencyname=isnull((select currencyname from sdcurrency where Currencycode = rpohcurrencycode),'') ,rpohbuyercode " ;
  SqlStr+=",RpohSupplyCode,RpohSettleMode,RpohTaxcode from sdRpoh ";
  SqlStr+=" where Rpohcheck=1 and Rpohclose=0 and Rpohcancel=0 ";
  SqlStr+=" and Rpohsupplycode='"+frmPoh->scPohSupply->ItemData[1]+"'";
  if(frmPoh->scPohSettleMode->Text!="" && CBSettleMode->Checked ==true)
  SqlStr+=" and RpohSettleMode = '"+frmPoh->scPohSettleMode->ItemData[1]+"'";
  if(frmPoh->scPohTaxCode->Text!="" && CBTax->Checked ==true)
  SqlStr+=" and RpohTaxCode= '"+frmPoh->scPohTaxCode->ItemData[1]+"'";

  TfrmWnQuery *p;
  try
  {
    StartWaitForm("正在查询,请稍候...");
    p=new TfrmWnQuery(this,"请购单查询",SqlStr);
  }
  __finally
  {
    EndWaitForm();
  }
  if(p->ShowModal()==mrOk)
  {
    seRpohCode->Text=p->ColData[1];
    FillGridWithData();
  }
  delete p;
}
//---------------------------------------------------------------------------



void __fastcall TfrmPod::sgPodClick(TObject *Sender)
{
if(sgPod->Cells[1][sgPod->Row]=="√")
  sgPod->ReadOnly=false;
 else
  sgPod->ReadOnly=true;
}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

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