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

📄 gmu.cpp

📁 速达开源ERP系统
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Gmu.h"
#include "commfunction.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"
TfrmGmu *frmGmu;
//---------------------------------------------------------------------------
__fastcall TfrmGmu::TfrmGmu(TComponent* Owner,AnsiString Code,AnsiString Name)
        : TStdBaseForm(Owner)
{
 edtGoodsCode->Text=Code;
 edtGoodsName->Text=Name;
 edtGoodsCode->Enabled=false;
 edtGoodsName->Enabled=false;
 scPrmUnit->Enabled=false;
 FillComboBox(scPrmUnit,"select unitname memo,unitcode from sdunit order by unitcode","memo","unitcode");
 FillComboBox(scAidUnit,"select unitname memo,unitcode from sdunit order by unitcode","memo","unitcode");
 Initial();
}
//---------------------------------------------------------------------------
void __fastcall TfrmGmu::Initial()
{
 TComResultSet *pResultSet=NewResultSet();
 AnsiString strSQL,sTemp,sItem;
 scPrmUnit->ItemIndex=-1;
 scAidUnit->ItemIndex=-1;
 sgUnit->RowCount=1;
 seUnitConv->Text="";
 pc_PrimaryUnit="";
 pc_HaveMultiUnit=false;
 pv_UnitState=0;
 //取物料计量单位
 strSQL=" select GmuUnit,UnitName,GmuConv,GmuPrimary from sdGmu,sdUnit ";
 strSQL=strSQL+" where GmuGoods = '"+edtGoodsCode->Text+"' and GmuUnit=UnitCode order by GmuUnit";
 pResultSet->Open(strSQL,"");
 pResultSet->MoveFirst();
 while(!pResultSet->Eof)
 {
  if(pResultSet->FieldByName("GmuPrimary")=="1")
  {
   pc_PrimaryUnit=pResultSet->FieldByName("GmuUnit");
   scPrmUnit->LocateKey(pc_PrimaryUnit);
  }
  else
  {
   sTemp=pResultSet->FieldByName("UnitName");
   sTemp+="("+pResultSet->FieldByName("GmuUnit")+")";
   sItem=sTemp+"\t"+pResultSet->FieldByName("GmuConv");
   sgUnit->AddItem(sItem);
   pc_HaveMultiUnit=true;
  }
  pResultSet->MoveNext();
 }
 pResultSet->Close();
 SetNormalState();
 if(scPrmUnit->ItemIndex == -1) //尚未定义主计量单位
 {
  sgUnit->Enabled=false;
  btnAdd->Enabled=false;
  btnDel->Enabled=false;
  btnUpd->Enabled=false;
 }
 delete pResultSet;
}
void __fastcall TfrmGmu::scPrmUnitClick(TObject *Sender)
{
 if(scPrmUnit->ItemData[1] == pc_PrimaryUnit)
  return;
 if(pc_PrimaryUnit=="" || (Application->MessageBox("修改主计量单位后所有的辅助单位需要重新设置,确定修改吗?",
            "系统提示",MB_YESNO)==IDYES))
 {
  //在数据库中更新
  ChgPrmUnit(scPrmUnit->ItemData[1]);

  pc_PrimaryUnit=scPrmUnit->ItemData[1];
  sgUnit->RowCount=1;
  scAidUnit->ItemIndex=-1;
  seUnitConv->Text="";
  SetNormalState();
 }
 else
  scPrmUnit->LocateKey(pc_PrimaryUnit);
}
//---------------------------------------------------------------------------
void __fastcall TfrmGmu::btnAddClick(TObject *Sender)
{
 if(pv_UnitState != 0)
  return;
 GroupBox1->Enabled=true;
 btnAdd->Enabled=false;
 btnDel->Enabled=false;
 btnUpd->Enabled=false;
 pv_UnitState=1; //增加状态
 scAidUnit->ItemIndex=-1;
 seUnitConv->Text="";
 scAidUnit->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TfrmGmu::btnDelClick(TObject *Sender)
{
 AnsiString sTemp;
 if(sgUnit->Row < 1)
  return;
 if(Application->MessageBox("确定要删除当前选中的辅助单位吗?",
            "系统提示",MB_YESNO)==IDYES)
 {
  sTemp=sgUnit->Cells[0][sgUnit->Row];
  sTemp=sTemp.SubString(sTemp.AnsiPos("(")+1,sTemp.AnsiPos(")")-sTemp.AnsiPos("(")-1);
  DelAidUnit(sTemp);
  sgUnit->RemoveItem(sgUnit->Row);
  btnReturnClick(NULL);
 }
}
//---------------------------------------------------------------------------
void __fastcall TfrmGmu::btnUpdClick(TObject *Sender)
{
 if(sgUnit->Row < 1)
  return;
 if(pv_UnitState != 0)
  return;
 GroupBox1->Enabled=true;
 scAidUnit->Enabled=false;
 btnAdd->Enabled=false;
 btnDel->Enabled=false;
 btnUpd->Enabled=false;
 seUnitConv->SetFocus();
 pv_UnitState=2; //增加状态
}
//---------------------------------------------------------------------------
void __fastcall TfrmGmu::seUnitConvKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
 AnsiString sTemp,sItem;
 if(Key == 13)
 {
  switch(pv_UnitState)
  {
   case 1: //增加状态
    if(scAidUnit->ItemIndex == -1)
     throw Exception("请选择需增加的辅助计量单位");
    if(scAidUnit->ItemData[1]==scPrmUnit->ItemData[1])
     throw Exception("主单位不能再定义成辅助单位");
    for(int i=1;i<sgUnit->RowCount;i++)
    {
     sTemp=sgUnit->Cells[0][i];
     //取已定义辅助单位代码
     sTemp=sTemp.SubString(sTemp.AnsiPos("(")+1,sTemp.AnsiPos(")")-sTemp.AnsiPos("(")-1);
     if(sTemp == scAidUnit->ItemData[1])
      throw Exception("该辅助单位已经定义");
    }
    if(seUnitConv->Text == "")
     throw Exception("请输入辅助单位对主计量单位的转换系数");
    if(StrToFloat(seUnitConv->Text) <= 0)
     throw Exception("转换系数不能为零或负数");
    //在数据库中增加记录
    AddAidUnit(scAidUnit->ItemData[1],seUnitConv->Text);

    sTemp=scAidUnit->Text+"("+scAidUnit->ItemData[1]+")";
    sItem=sTemp+"\t"+seUnitConv->Text;
    sgUnit->AddItem(sItem);
    sgUnit->Row=sgUnit->RowCount-1;
    break;
   case 2: //修改状态
    if(sgUnit->Row < 1)
    return;
    if(scAidUnit->ItemIndex == -1)
     throw Exception("辅助计量单位出现错误");
    if(seUnitConv->Text == "")
     throw Exception("请输入辅助单位对主计量单位的转换系数");
    if(StrToFloat(seUnitConv->Text) <= 0)
     throw Exception("转换系数不能为零或负数");
    //在数据库中修改记录
    UpdAidUnit(scAidUnit->ItemData[1],seUnitConv->Text);

    sTemp=scAidUnit->Text+"("+scAidUnit->ItemData[1]+")";
    sItem=sTemp+"\t"+seUnitConv->Text;
    sgUnit->ChangeItem(sItem,sgUnit->Row);
    break;
   default:
    break;
  }
 SetNormalState();
 }
}
//---------------------------------------------------------------------------
void __fastcall TfrmGmu::AddAidUnit(AnsiString AidUnitCode,AnsiString ConvRate)
{
 TComResultSet *pResultSet=NewResultSet();
 AnsiString strSQL,sTemp;
 strSQL=" insert into sdGmu(GmuGoods,GmuUnit,GmuConv,GmuPrimary)values(";
 strSQL+="'"+edtGoodsCode->Text+"',";
 strSQL+="'"+AidUnitCode+"',";
 strSQL+=ConvRate+",";
 strSQL+="0)";
 pResultSet->Open(strSQL,"");
 pResultSet->Close();
 delete pResultSet;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGmu::DelAidUnit(AnsiString AidUnitCode)
{
 TComResultSet *pResultSet=NewResultSet();
 AnsiString strSQL,sTemp;
 strSQL=" delete from sdGmu ";
 strSQL+=" where GmuGoods = '"+edtGoodsCode->Text+"' and ";
 strSQL+=" GmuUnit='"+AidUnitCode+"'";
 pResultSet->Open(strSQL,"");
 pResultSet->Close();
 delete pResultSet;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGmu::UpdAidUnit(AnsiString AidUnitCode,AnsiString ConvRate)
{
 TComResultSet *pResultSet=NewResultSet();
 AnsiString strSQL,sTemp;
 strSQL=" update sdGmu set GmuConv=";
 strSQL+=ConvRate;
 strSQL+=" where GmuGoods='"+edtGoodsCode->Text+"' and ";
 strSQL+=" GmuUnit='"+AidUnitCode+"'";
 pResultSet->Open(strSQL,"");
 pResultSet->Close();
 delete pResultSet;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGmu::UpdMultiFlag(int mu)
{
 TComResultSet *pResultSet=NewResultSet();
 AnsiString strSQL;
 strSQL=" update sdGoods set GoodsMunit=";
 strSQL+=mu;
 strSQL+=" where GoodsCode='"+edtGoodsCode->Text+"'";
 pResultSet->Open(strSQL,"");
 pResultSet->Close();
 delete pResultSet;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGmu::ChgPrmUnit(AnsiString PrmUnit)
{
 TComResultSet *pResultSet=NewResultSet();
 AnsiString strSQL,sTemp;
 strSQL=" delete from sdGmu ";
 strSQL=strSQL+" where GmuGoods = '"+edtGoodsCode->Text+"'";
 pResultSet->Open(strSQL,"");
 pResultSet->Close();
 strSQL=" insert into sdGmu(GmuGoods,GmuUnit,GmuConv,GmuPrimary)values(";
 strSQL+="'"+edtGoodsCode->Text+"',";
 strSQL+="'"+scPrmUnit->ItemData[1]+"',";
 strSQL+="1,";
 strSQL+="1)";
 pResultSet->Open(WideString(strSQL),WideString(""));
 pResultSet->Close();
 delete pResultSet;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGmu::SetNormalState()
{
 pv_UnitState=0;
 btnAdd->Enabled=true;
 btnDel->Enabled=true;
 btnUpd->Enabled=true;
 scAidUnit->Enabled=true;
 seUnitConv->Enabled=true;
 GroupBox1->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGmu::btnCloseClick(TObject *Sender)
{
 if(pc_HaveMultiUnit==1 && sgUnit->RowCount <=1)
 {
  UpdMultiFlag(0);
  pc_HaveMultiUnit=0;
 }
 if(pc_HaveMultiUnit==0 && sgUnit->RowCount > 1)
 {
  UpdMultiFlag(1);
  pc_HaveMultiUnit=1;
 }
 this->ModalResult=mrOk;
 this->Close();
}
//---------------------------------------------------------------------------


void __fastcall TfrmGmu::sgUnitClick(TObject *Sender)
{
 AnsiString sTemp;
 int ARow;
 ARow=sgUnit->Row;
 if(ARow < 1)
  return;
 sTemp=sgUnit->Cells[0][ARow];
 //取已定义辅助单位代码
 sTemp=sTemp.SubString(sTemp.AnsiPos("(")+1,sTemp.AnsiPos(")")-sTemp.AnsiPos("(")-1);
 scAidUnit->LocateKey(sTemp);
 seUnitConv->Text=sgUnit->Cells[1][ARow];
 SetNormalState();
}
//---------------------------------------------------------------------------

void __fastcall TfrmGmu::btnReturnClick(TObject *Sender)
{
 if(sgUnit->Row < 1)
 {
  scAidUnit->ItemIndex=-1;
  seUnitConv->Text="";
  SetNormalState();
 }
 else
  sgUnitClick(NULL);

}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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