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

📄 pmhdl.cpp

📁 邮 电 公 司 erp源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
         m_PohCheck=b_PohCheck;
         m_PohChecker=b_PohChecker;
         m_PohCheckDate=b_PohCheckDate;
         throw Exception(e.Message);
        }
     }
     else
      throw Exception("没有单据可以审核");
}

void TsdPoh::Close(int IsClose)
{
  AnsiString temp="";
  if(this->Count>0)
  {
   try
   {
    m_Query->Close();
    m_Query->SQL->Clear();
    m_Query->SQL->Add("select BuyerCode from sdBuyer where BuyerClose=1 and BuyerCode='"+g_sdUserCode+"'");
    m_Query->Open();
    if(m_Query->RecordCount<=0)
    {
     m_Query->Close();
     throw Exception("当前用户非采购员或无结清/反结清权限");
    }
    if(IsClose==0)
    {
      m_StoredProc->Close();
      m_StoredProc->ProcedureName="sdPoh_Close";
      m_StoredProc->Parameters->Clear();
      m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,18,b_PohCode);
      m_StoredProc->Parameters->CreateParameter("@W_PodLine",ftInteger,pdInput,10,0);
      m_StoredProc->Parameters->CreateParameter("@PohClose",ftInteger,pdInput,4,0);
      m_StoredProc->Parameters->CreateParameter("@PohCloseDate",ftString,pdInput,10,temp);
      m_StoredProc->ExecProc();
      m_PohClose=0;
      for(int i=0;i<ItemCount;i++)
      {
        this->LocateItemByIndex(i);
        this->SetItemValue(fiPodClose,"0");
        this->SetItemValue(fiPodCloseDate,"");
        AddToObject();
      }
    }
    else if(IsClose==1)
    {
      m_StoredProc->Close();
      m_StoredProc->ProcedureName="sdPoh_Close";
      m_StoredProc->Parameters->Clear();
      m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,18,b_PohCode);
      m_StoredProc->Parameters->CreateParameter("@W_PodLine",ftInteger,pdInput,10,0);
      m_StoredProc->Parameters->CreateParameter("@PohClose",ftInteger,pdInput,4,1);
      m_StoredProc->Parameters->CreateParameter("@PohCloseDate",ftString,pdInput,10,g_sdCurDate);
      m_StoredProc->ExecProc();

      m_PohClose=1;
      for(int i=0;i<ItemCount;i++)
      {
        this->LocateItemByIndex(i);
        this->SetItemValue(fiPodClose,"1");
        this->SetItemValue(fiPodCloseDate,g_sdCurDate);
        AddToObject();
      }
    }
    else if(IsClose==2)
    {
      m_StoredProc->Close();
      m_StoredProc->ProcedureName="sdPoh_Close";
      m_StoredProc->Parameters->Clear();
      m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,18,b_PohCode);
      m_StoredProc->Parameters->CreateParameter("@W_PodLine",ftInteger,pdInput,10,StrToInt(this->GetItemValue(fiPodLine)));
      m_StoredProc->Parameters->CreateParameter("@PohClose",ftInteger,pdInput,4,2);
      m_StoredProc->Parameters->CreateParameter("@PohCloseDate",ftString,pdInput,10,temp);
      m_StoredProc->ExecProc();

      this->SetItemValue(fiPodClose,"0");
      this->SetItemValue(fiPodCloseDate,"");
      AddToObject();
    }
    else if(IsClose==3)
    {
      m_StoredProc->Close();
      m_StoredProc->ProcedureName="sdPoh_Close";
      m_StoredProc->Parameters->Clear();
      m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,18,b_PohCode);
      m_StoredProc->Parameters->CreateParameter("@W_PodLine",ftInteger,pdInput,10,StrToInt(this->GetItemValue(fiPodLine)));
      m_StoredProc->Parameters->CreateParameter("@PohClose",ftInteger,pdInput,4,3);
      m_StoredProc->Parameters->CreateParameter("@PohCloseDate",ftString,pdInput,10,g_sdCurDate);
      m_StoredProc->ExecProc();

      this->SetItemValue(fiPodClose,"1");
      this->SetItemValue(fiPodCloseDate,g_sdCurDate);
      AddToObject();
    }
    TsdPoh *p=(TsdPoh*)Records(CurRecNo);
    p->Assign(this);
    BackupValue();
  }
  catch(Exception &e)
  {
    m_PohClose=b_PohClose;
    throw Exception(e.Message);
  }
 }
}

void TsdPoh::Revoke(int IsRevoke)
{
    if(this->Count>0)
    {
      try
      {
        m_StoredProc->ProcedureName="sdPoh_Revoke";
        m_StoredProc->Parameters->Clear();


        if(IsRevoke==1)
        {
          PohCancel=1;
          PohCanceler=g_sdUserCode;
          PohCancelDate=g_sdCurDate;
          m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,20,b_PohCode);
          m_StoredProc->Parameters->CreateParameter("@PohCancel",ftSmallint,pdInput,2,1);
          m_StoredProc->Parameters->CreateParameter("@PohCanceler",ftString,pdInput,20,g_sdUserCode);
          m_StoredProc->Parameters->CreateParameter("@PohCancelDate",ftString,pdInput,10,g_sdCurDate);

          m_StoredProc->ExecProc();
          m_StoredProc->Close();
         }
         else
         {
          PohCancel=0;
          PohCanceler="";
          PohCancelDate="";
          AnsiString temp="";
          m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,20,b_PohCode);
          m_StoredProc->Parameters->CreateParameter("@PohCancel",ftSmallint,pdInput,2,0);
          m_StoredProc->Parameters->CreateParameter("@PohCanceler",ftString,pdInput,20,temp);
          m_StoredProc->Parameters->CreateParameter("@PohCancelDate",ftString,pdInput,10,temp);

          m_StoredProc->ExecProc();
          m_StoredProc->Close();
          }
         TsdPoh *p=(TsdPoh*)Records(CurRecNo);
         p->Assign(this);
         BackupValue();
       }
       catch(Exception &e)
       {
         m_PohCancel=b_PohCancel;
         m_PohCanceler=b_PohCanceler;
         m_PohCancelDate=b_PohCancelDate;
         throw Exception(e.Message);
        }
     }
}

void TsdPoh::Stop(int IsStop)
{
  if(this->Count>0)
  {
    if(IsStop==1)
    {
      m_StoredProc->Close();
      m_StoredProc->ProcedureName="sdPoh_Stop";
      m_StoredProc->Parameters->Clear();
      m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,18,b_PohCode);
      m_StoredProc->Parameters->CreateParameter("@PohStop",ftInteger,pdInput,4,1);
      m_StoredProc->ExecProc();
      m_PohStop=1;
    }
    else
    {
      m_StoredProc->Close();
      m_StoredProc->ProcedureName="sdPoh_Stop";
      m_StoredProc->Parameters->Clear();
      m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,18,b_PohCode);
      m_StoredProc->Parameters->CreateParameter("@PohStop",ftInteger,pdInput,4,0);
      m_StoredProc->ExecProc();
      m_PohStop=0;
    }
  }
}

AnsiString TsdPoh::GetItemValue(euPod FieldName)
{
    return m_sdPod->GetFieldValue(FieldName);
}

//---------------------------------------------------------------------------

void TsdPoh::SetItemValue(euPod FieldName, AnsiString Value)
{
    m_sdPod->SetFieldValue(FieldName,Value);
}
//---------------------------------------------------------------------------

int __fastcall TsdPoh::GetItemCount()
{
    if(m_sdPod)
      return m_sdPod->Count;
    else
      return 0;
}
//---------------------------------------------------------------------------
int __fastcall TsdPoh::GetCurItemNo()
{
    return m_sdPod->CurRecNo;
}

char __fastcall TsdPoh::GetCurItemStatus()
{
    return m_sdPod->CurStatus;
}

//---------------------------------------------------------------------------
AnsiString __fastcall TsdPoh::GetItemBookMark()
{
   return m_sdPod->BookMark;
}
//---------------------------------------------------------------------------
TsdPoh::~TsdPoh()
{
  try{
    for(int i=0;i<this->Count;i++)
    {
      this->LocateByIndex(i);
      this->AssignValue();
      delete m_sdPod;
    }
  }
  catch(...)
  {
    throw Exception("析构函数出错");
  }
}
//---------------------------------------------------------------------------

//**************************************
//     (TsdPod)采购单单行维护
//**************************************

void __fastcall TsdPod::SetPodLine(int value)
{
    if(value<=0)
      throw Exception("行号必须大于零");
    if(value!=m_PodLine)
      if(FindKey(AnsiString(value)))
        throw Exception("行号已存在");
    m_PodLine = value;
}
//---------------------------------------------------------------------------

void __fastcall TsdPod::SetPodCode(AnsiString value)
{
    m_PodCode = value;
    //m_PodCode=sdParent->GetFieldValue(fiPohCode);
}
//---------------------------------------------------------------------------

void __fastcall TsdPod::SetPodGoods(AnsiString value)
{
    if(value.IsEmpty()== true)
      throw Exception("采购单行的货物编码不能为空!");
    if(value.Length()>18)
      throw Exception("物料编码长度不能大于18");
    if(value != m_PodGoods)
    {
      m_Query->Close();
      m_Query->SQL->Clear();
      m_Query->SQL->Add(" select pgdgoodscode from sdpgd ");
      m_Query->SQL->Add(" where pgdgoodscode='"+value+"'");
      m_Query->SQL->Add(" and pgdsupplycode='"+sdParent->GetFieldValue(fiPohSupply)+"'");
      m_Query->Open();
      if(m_Query->RecordCount<1)
      {
        m_Query->Close();
        throw Exception("物料:'"+value+"'不存在或未在供应商物品资料中定义");
      }
      m_Query->Close();
    }
    m_PodGoods = value;
}
//---------------------------------------------------------------------------

void __fastcall TsdPod::SetPodUnit(AnsiString value)
{
    AnsiString FUnit;
    int FMUnit;
    if(m_PodGoods.IsEmpty())
      throw Exception("采购物料不能为空");
    if(value.IsEmpty())
      throw Exception("采购单位不能为空");
    if(value.Length()>18)
      throw Exception("采购单位长度不能大于18");
    if(value!=m_PodUnit)
    {
      m_Query->Close();
      m_Query->SQL->Clear();
      m_Query->SQL->Add("Select unitcode from sdunit where unitcode='"+value+"'");
      m_Query->Open();
      if(m_Query->RecordCount<=0)
      {
        m_Query->Close();
        throw Exception("计量单位:"+value+"未定义");
      }
      m_Query->Close();
      m_Query->SQL->Clear();
      m_Query->SQL->Add("select goodsmunit,Goodsunitcode from sdgoods where goodscode='"+m_PodGoods+"'");
      m_Query->Open();
      if(m_Query->RecordCount<1)
      {
        m_Query->Close();
        throw Exception("当前物料:"+m_PodGoods+"在物料主文件中没找到");
      }
      FMUnit=m_Query->FieldValues["GoodsMunit"];
      if(FMUnit!=1)
      {
        FUnit=m_Query->FieldValues["GoodsUnitCode"];
        if(FUnit.UpperCase()!=value.UpperCase())
        {
          m_Query->Close();
          m_PodUnit=FUnit;
          m_PodConvRate=1;
          throw Exception("当前物料不是多计量单位");
        }
      }
      m_Query->Close();
    }
    m_PodUnit = value;
}
//---------------------------------------------------------------------------

void __fastcall TsdPod::SetPodConvRate(double value)
{
    AnsiString FUnit;
    int FMUnit;
    if(m_PodGoods.IsEmpty())
      throw Exception("采购物料不能为空");
    if(m_PodUnit.IsEmpty())
      throw Exception("物料计量单位不能为空");
    if(value<=0)
      throw Exception("换算系数不能小于等于零");
    if(m_PodConvRate!=value)
    {
      m_Query->Close();
      m_Query->SQL->Clear();
      m_Query->SQL->Add("select goodsmunit,Goodsunitcode from sdgoods where goodscode='"+m_PodGoods+"'");
      m_Query->Open();
      if(m_Query->RecordCount<1)
      {
        m_Query->Close();
        throw Exception("当前物料:"+m_PodGoods+"在物料主文件中没找到");
      }
      FMUnit=m_Query->FieldValues["GoodsMunit"];
      if(FMUnit!=1)
      {
        FUnit=m_Query->FieldValues["GoodsUnitCode"];
        if(FUnit.UpperCase()!=m_PodUnit.UpperCase())
        {
          if(value!=1)
          {
            m_Query->Close();
            m_PodUnit=FUnit;
            m_PodConvRate=1;
            throw Exception("当前物料不是多计量单位,不能设置换算系数");
          }
        }
      }
      m_Query->Close();
    }
    m_PodConvRate = value;
}
//---------------------------------------------------------------------------

void __fastcall TsdPod::SetPodQty(double value)
{
    if(m_PodGoods.IsEmpty())
      throw Exception("采购物料不能为空");
    if(value<=0)
      throw Exception("采购数量不能小于等于零");
    m_PodQty = value;
}
//---------------------------------------------------------------------------

void __fastcall TsdPod::SetPodPrice(double value)
{
    if(m_PodGoods.IsEmpty())
      throw Exception("采购物料不能为空");
    if(m_PodQty<=0)
       throw Exception("采购单行的数量不能小于或等于零.");
    if(value<0)
       throw Exception("采购单行的单价不能小于零.");
    m_PodPrice = value;
    m_PodAmt=DataCarry(m_PodQty*m_PodPrice,2,0);
}
//---------------------------------------------------------------------------

void __fastcall TsdPod::SetPodType(int value)
{
    if(value!=1 && value!=2)
      throw Exception("采购单行类型只能取值1-手工录入2-系统生成");
    m_PodType = value;
}
//---------------------------------------------------------------------------

void __fastcall TsdPod::SetPodFrom(int value)
{
    if(value!=1 && value!=2 && value!=3)
      throw Exception("需求来源只能取值1-常规需求 2-MRP需求 3-库存需求");
    m_PodFrom = value;
}
//---------------------------------------------------------------------------

void __fastcall TsdPod::SetPodFromCode(AnsiString value)
{
  if(m_PodType==2)

⌨️ 快捷键说明

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