pretd.cpp

来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 321 行

CPP
321
字号
//--------------------------------------------------------------------------
#include <vcl.h>
#include "Pretd.h"
#include "Preth.h"
#include "wnquery.h"
//--------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "SDComboBox"
#pragma resource "*.dfm"

TfrmPretd  *frmPretd;
//--------------------------------------------------------------------------
__fastcall TfrmPretd::TfrmPretd(TComponent* Owner, HWND chWnd, AnsiString ClassCode,AnsiString WhereStr)
        : TStdBaseForm(Owner,chWnd,ClassCode,WhereStr)

{
  InitControlGroup();
  btnOK->Enabled = false;
}
//--------------------------------------------------------------------------
__fastcall TfrmPretd::TfrmPretd(TComponent* Owner) : TStdBaseForm(Owner)
{
  InitControlGroup();
  btnOK->Enabled = false;
}
//----------------------------------------------------------------------------


void __fastcall TfrmPretd::btnOKClick(TObject *Sender)
{
  double FVal,FPrice,FQty,FTax,FAmt;
  int ErrNum;
  try
  {
    StartWaitForm("正在生成退货单,请稍候...");
    if(sgPretd->RowCount>1)
    {
     int j;
     j=comServer->ItemCount-1;
     if(j>=0)
     {
        comServer->LocateItemByIndex(j);
        j=StrToInt(GetDetailValue("PretdLine"));
        j=j+1;
     }
     else
        j=1;
     try
     {
       for(int i=1;i<sgPretd->RowCount;i++)
       {
           if(sgPretd->Cells[1][i]=="√")
           {
               comServer->AddItem();
               SetDetailValue("PretdCode",frmPreth->sePrethCode->Text);
               SetDetailValue("PretdLine",AnsiString(j));
               SetDetailValue("PretdPrecCode",sePretdPrecCode->Text);
               SetDetailValue("PretdPrecdLine", sgPretd->Cells[2][i]);
               SetDetailValue("PretdGoods", sgPretd->Cells[3][i]);
               SetDetailValue("Goodsname", sgPretd->Cells[4][i]);
               SetDetailValue("Goodsspec", sgPretd->Cells[5][i]);
               SetDetailValue("PretdUnit", sgPretd->Cells[6][i]);
               SetDetailValue("PretdConv", sgPretd->Cells[7][i]);
               if(sgPretd->Cells[9][i] == "")
                throw Exception("请输入退货数量");
               SetDetailValue("PretdQty", sgPretd->Cells[9][i]);
               if(sgPretd->Cells[10][i] == "")
                throw Exception("请输入退货单价");
               SetDetailValue("PretdPrice", sgPretd->Cells[10][i]);
               FQty=sgPretd->Cells[9][i].ToDouble();
               FPrice=sgPretd->Cells[10][i].ToDouble();
               FVal=(FQty*FPrice)/(1+FPrethTaxRate);
               FAmt=DataCarry(FVal,2,0);
               FTax=DataCarry(FVal*FPrethTaxRate,2,0);
               SetDetailValue("PretdAmt",AnsiString(FAmt));
               SetDetailValue("PretdTaxAmt",AnsiString(FTax));
               SetDetailValue("PretdLoc", sgPretd->Cells[11][i]);
               SetDetailValue("PretdBatch", sgPretd->Cells[12][i]);
               SetDetailValue("PretdSo", sgPretd->Cells[13][i]);
               SetDetailValue("PretdSodLine", sgPretd->Cells[14][i]);
               SetDetailValue("PretdState", "1");
               SetDetailValue("PretdExes", 0);
               SetDetailValue("PretdDesc","");
               SetDetailValue("PretdClose",0);
               comServer->AddToObject();
               j=j+1;
           }
       }
     }
     catch(Exception &e)
     {
      comServer->FreeItem();
      this->ModalResult=0;
      throw Exception(e.Message);
     }
    }
  }
  __finally
  {
    EndWaitForm();
  }
  Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::btnCancelClick(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::InitControlGroup()
{
    sgPretd->RowCount = 1;
    sePretdPrecCode->Text="";
    sePrethSupply->Text=frmPreth->sePrethSupply->Text;
    sePrethSupply->Enabled=false;
    FPrethSupply=frmPreth->sePrethSupply->ItemData[cbItem2];
    sePrethCurrency->Text=frmPreth->sePrethCurrency->Text;
    sePrethCurrency->Enabled=false;
    FPrethCurrency=frmPreth->sePrethCurrency->ItemData[cbItem2];
    sePrethRate->Text=frmPreth->sePrethEnrate->Text;
    sePrethTax->Text=frmPreth->scPrethTaxCode->Text;
    sePrethTax->Enabled=false;
    FPrethTax=frmPreth->scPrethTaxCode->ItemData[cbItem2];
    if(frmPreth->scPrethTaxCode->ItemData[cbItem3] == "")
     FPrethTaxRate=0;
    else
     FPrethTaxRate=frmPreth->scPrethTaxCode->ItemData[cbItem3].ToDouble();
}
//---------------------------------------------------------------------------

void __fastcall TfrmPretd::FillGridWithData()
{

    AnsiString  ItemStr,s_SQL;
    double d_PrecdQty;
    TComResultSet * TempRes;
    TempRes=new TComResultSet(Handle, g_ClientHandle);
    TempRes->Close();
    TempRes->Open("select parametercode,parametervalue from sdparameter where parametercode ='10302' and parametervalue =1","parametercode");

    s_SQL=AnsiString(" Select PrecdLine,PrecdGoods,PrecdUnit,PrecdConv,precdQty=PrecdQty-PrecdBQty,goodsname=isnull((select goodsname from sdgoods where goodscode=precdgoods),''),goodsspec=isnull((select goodsspec from sdgoods where goodscode=precdgoods),'')")
         +AnsiString(", PrecdLoc,PrecdBatch,PrecdSo,PrecdSodLine,PrecdPrice,goodsbuyer,goodscode from sdPrecd,sdgoods where goodscode=precdgoods and PrecdCode='"+sePretdPrecCode->Text+"'")
         +AnsiString(" and PrecdClose = 0 and PrecdQty-PrecdBQty>0 ");
    if(TempRes->RecordCount >0)
    s_SQL+=" and goodsbuyer = '"+g_sdUserCode+"'";
    sgPretd->RowCount=1;
    TComResultSet *RsPretd;
    try
    {
      StartWaitForm("正在查询数据,请稍候......");
      RsPretd=new TComResultSet(Handle, g_ClientHandle);
      RsPretd->Open(s_SQL,"");
      sgPretd->RowCount=1;
      while( RsPretd->Eof == 0)
      {
       d_PrecdQty=StrToFloat(RsPretd->FieldByName("PrecdQty"));
       if(d_PrecdQty > 0)
       {
         ItemStr="\t"+AnsiString("") +
                 "\t"+RsPretd->FieldByName("PrecdLine")+
                 "\t"+RsPretd->FieldByName("PrecdGoods")+
                 "\t"+RsPretd->FieldByName("Goodsname")+
                 "\t"+RsPretd->FieldByName("Goodsspec")+
                 "\t"+RsPretd->FieldByName("PrecdUnit")+
                 "\t"+RsPretd->FieldByName("PrecdConv")+
                 "\t"+RsPretd->FieldByName("PrecdQty")+
                 "\t"+RsPretd->FieldByName("PrecdQty")+
                 "\t"+RsPretd->FieldByName("PrecdPrice")+
                 "\t"+RsPretd->FieldByName("PrecdLoc")+
                 "\t"+RsPretd->FieldByName("PrecdBatch")+
                 "\t"+RsPretd->FieldByName("PrecdSo")+
                 "\t"+RsPretd->FieldByName("PrecdSodLine");
         sgPretd->AddItem(ItemStr);
       }
       RsPretd->MoveNext();
      }
      RsPretd->Close();
    }
    __finally
    {
      EndWaitForm();
    }
    delete RsPretd;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::GetComObject(TComServer *comServerPtr)
{
    comServer = comServerPtr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::SetDetailValue(AnsiString fieldname,AnsiString value)
{
  comServer->DataSet->SetDetailValue(fieldname,value);
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::sgPretdDblClick(TObject *Sender)
{
    AnsiString SqlStr;
    int ARow=sgPretd->Row;
    if (ARow >0)
    {
      if(sgPretd->Col==1)
      {
        if (sgPretd->Cells[1][ARow] == "√")
        {
         sgPretd->Cells[1][ARow] =  "";
         for (int i=1;i<sgPretd->RowCount;i++)
         {
            if(sgPretd->Cells[1][i]=="√")
            {
               btnOK->Enabled=true;
               break;
            }
            else
               btnOK->Enabled=false;
         }
        }
        else
        {
          sgPretd->Cells[1][ARow] =  "√";
          btnOK->Enabled = true;
        }
      }
      else if(sgPretd->Col==11 && sgPretd->Cells[1][ARow] == "√")
      {
        SqlStr="002[货位代码][货位名称]select loccode,locname from sdLoc,sdlg ";
        SqlStr+=" where lgLoccode=loccode and lggoodscode='"+sgPretd->Cells[3][ARow]+"' order by loccode";
        TfrmWnQuery *p;
        try
        {
          StartWaitForm("正在查询,请稍候...");
          p=new TfrmWnQuery(this,"货位查询",SqlStr);
        }
        __finally
        {
          EndWaitForm();
        }
        if(p->ShowModal()==mrOk)
        {
          sgPretd->Cells[11][ARow]=p->ColData[1];
        }
        delete p;
      }
    }
}

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

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

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

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


void __fastcall TfrmPretd::sePretdPrecCodeButtonClick(TObject *Sender)
{
  AnsiString SqlStr;
  SqlStr="005[收货单号][收货日期][币种][税码][收货员]select prechcode,prechdate,currencyname,taxname,prechUser from sdprech,sdCurrency,sdtax";
  SqlStr+=" where prechcurrency=currencycode and prechtaxcode=taxcode and prechcheck=1 and prechclose=0 and prechcancel=0 ";
  SqlStr+=" and prechsupply='"+FPrethSupply+"' and prechcurrency='"+FPrethCurrency+"' ";
  if(cbSameTax->Checked)
    SqlStr+=" and prechtaxCode='"+FPrethTax+"' order by prechcode";
  else
    SqlStr+=" order by prechcode";
  TfrmWnQuery *p;
  try
  {
    StartWaitForm("正在查询,请稍候...");
    p=new TfrmWnQuery(this,"收货单查询",SqlStr);
  }
  __finally
  {
    EndWaitForm();
  }
  if(p->ShowModal()==mrOk)
  {
    sePretdPrecCode->Text=p->ColData[1];
    FillGridWithData();
  }
  delete p;  
}
//---------------------------------------------------------------------------

void __fastcall TfrmPretd::sgPretdSelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
 if(sgPretd->Cells[1][ARow]=="√")
  sgPretd->ReadOnly=false;
 else
  sgPretd->ReadOnly=true;
}
//---------------------------------------------
AnsiString __fastcall TfrmPretd::GetDetailValue(AnsiString fieldname)
{
  Variant vTmp;
  vTmp=comServer->DataSet->GetItemValue(fieldname);
  if(vTmp.IsNull())
   return "";
  else
   return AnsiString(vTmp);
}

⌨️ 快捷键说明

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