arrsd_hy.cpp

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

CPP
357
字号
//--------------------------------------------------------------------------
#include <vcl.h>
#include "Arrsd_HY.h"
#include "Arrsh_HY.h"
//--------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "SDComboBox"
#pragma link "DateEdit"
#pragma resource "*.dfm"

TfrmArrsd_HY  *frmArrsd_HY;
//--------------------------------------------------------------------------
__fastcall TfrmArrsd_HY::TfrmArrsd_HY(TComponent* Owner)
        : TStdBaseForm(Owner)
{
  btnOK->Enabled = false;
}
//--------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::btnOKClick(TObject *Sender)
{
  double tmp;
  try
  {
    tmp=0;
    for(int i=1;i<sgArrsd->RowCount;i++)
    {
     if(sgArrsd->Cells[1][i]=="√")
     {
      if(sgArrsd->Cells[11][i] == "")
       throw Exception("核销金额不允许为空 ");
      tmp+=StrToFloat(sgArrsd->Cells[11][i]);
     }
    }
    if(tmp-FAmt > 0)
     throw Exception("核销金额总和不能大于退款单据金额");

    StartWaitForm("正在生成红字核销单行,请稍候......");
    if(sgArrsd->RowCount>1)
    {
     int j;
     j=comServer->ItemCount-1;
     if(j>=0)
     {
        comServer->LocateItemByIndex(j);
        j=StrToInt(GetDetailValue("ArrsdLine"));
        j=j+1;
     }
     else
        j=1;
     try
     {
       for(int i=1;i<sgArrsd->RowCount;i++)
       {
           if(sgArrsd->Cells[1][i]=="√")
           {
               comServer->AddItem();
               SetDetailValue("ArrsdCode",frmArrsh_HY->seArrshCode->Text);
               SetDetailValue("ArrsdLine",AnsiString(j));
               SetDetailValue("ArrsdDocCode",sgArrsd->Cells[2][i]);
               SetDetailValue("ArrsdDocLine",sgArrsd->Cells[3][i]);
               if(sgArrsd->Cells[10][i] == "")
                throw Exception("收款金额不允许为空");
               SetDetailValue("ArrsdRAmt",sgArrsd->Cells[10][i]);
               if(sgArrsd->Cells[11][i] == "")
                throw Exception("核销金额不允许为空");
               SetDetailValue("ArrsdCAmt",sgArrsd->Cells[11][i]);
               if(sgArrsd->Cells[12][i] == "")
                throw Exception("换算系数不允许为空");
               SetDetailValue("ArrsdConv",sgArrsd->Cells[12][i]);
               SetDetailValue("ArrsdDesc","");
               comServer->AddToObject();
               j=j+1;
           }
       }
     }
     catch(Exception &e)
     {
      comServer->FreeItem();
      this->ModalResult=0;
      throw Exception(e.Message);
     }
    }
  }
  __finally
  {
    EndWaitForm();
  }
  Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::btnCancelClick(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::FormShow(TObject *Sender)
{
    InitControlGroup();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::InitControlGroup()
{
    AnsiString sSql;
    sgArrsd->RowCount = 1;
    seArrshDocType->Text=frmArrsh_HY->scArrshDocType->Text;
    FDocType=StrToInt(frmArrsh_HY->scArrshDocType->ItemData[1]);
    seArrshDocCode->Text=frmArrsh_HY->seArrshDocCode->Text;
    FDocCode=frmArrsh_HY->seArrshDocCode->Text;
    seClientCode->Text="";
    seCurrencyCode->Text="";
    seEnrate->Text="";
    seAmt->Text="";
    seSKDocCode->Text="";
    seArrsdDocCode->Text="";
    deBeginDate->Text="";

    TComResultSet *RsArrsd;
    RsArrsd=new  TComResultSet(Handle,g_ClientHandle);
    try
    {
      switch(FDocType)
      {
       case 3: //红字应收单
        sSql =" select ArobClient Client,ArobCurrency Currency,ArobDocCode SKDocCode,ArobEnrate Enrate,ArobAmt-ArobCAmt Amt ";
        sSql+=" from sdArob where ArobCheck=1 and ArobRed=-1 and ArobCode='"+FDocCode+"'";
        break;
       default:
        sSql="";
        break;
      }
      RsArrsd->Open(sSql,"");
      if(RsArrsd->RecordCount > 0)
      {
       FClientCode=RsArrsd->FieldByName("Client");
       seClientCode->Text=RsArrsd->FieldByName("Client");
       FCurrencyCode=RsArrsd->FieldByName("Currency");
       seCurrencyCode->Text=RsArrsd->FieldByName("Currency");
       FEnrate=StrToFloat(RsArrsd->FieldByName("Enrate"));
       seEnrate->Text=RsArrsd->FieldByName("Enrate");
       FAmt=StrToFloat(RsArrsd->FieldByName("Amt"));
       seAmt->Text=RsArrsd->FieldByName("Amt");
       FSKDocCode=RsArrsd->FieldByName("SKDocCode");
       seSKDocCode->Text=RsArrsd->FieldByName("SKDocCode");
      }
      else
      {
       throw Exception("'"+FDocCode+"'是无效单据号");
      }
    }
    __finally
    {
      RsArrsd->Close();
      delete RsArrsd;
    }
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmArrsd_HY::GetSqlString()
{
    AnsiString  s_SQL,s_Temp;
    s_SQL =" select ArcavhCode,DocCurrency,ArcavdLine,(case ArcavdDocType when 1 then '应收发票' else '其他应收单' end )DocType, ";
    s_SQL+=" ArcavdDocCode,ArcavdDocLine,ArcavdRAmt,ArcavdCAmt,ArcavdConv ";
    s_SQL+=" from sdArcavh,sdArcavd,sdVW_AR_Doc ";
    s_SQL+=" where ArcavhCode=ArcavdCode and ArcavhCheck=1 ";
    s_SQL+=" and ArcavdDocType=DocTypeCode and ArcavdDocCode=DocCode and ArcavdDocLine=DocLine ";
    s_SQL+=" and ArcavdDocCode='"+FSKDocCode+"' ";
    s_SQL+=" and ArcavdDocType=2 ";
    s_Temp="";
    if(seArrsdDocCode->Text != "")
     s_Temp+=" and ArcavhCode ='"+seArrsdDocCode->Text+"' ";
    if(deBeginDate->Text != "")
     s_Temp+=" and ArcavhDate >='"+deBeginDate->Text+"' ";
    s_SQL+=s_Temp;
    s_SQL+=" order by ArcavhCode,ArcavdLine ";
    return(s_SQL);
}
//---------------------------------------------------------------------------

void __fastcall TfrmArrsd_HY::FillGridWithData()
{
  AnsiString  ItemStr,s_SQL;
  TComResultSet *RsArrsd;
  try
  {
   try
   {
    s_SQL =GetSqlString();
    sgArrsd->RowCount=1;
    RsArrsd=new  TComResultSet(Handle,g_ClientHandle);
    RsArrsd->Open(s_SQL,"");
    while( RsArrsd->Eof == 0)
    {
     ItemStr = "\t"+AnsiString("") +
               "\t"+RsArrsd->FieldByName("ArcavhCode")+
               "\t"+RsArrsd->FieldByName("ArcavdLine")+
               "\t"+RsArrsd->FieldByName("DocType")+
               "\t"+RsArrsd->FieldByName("ArcavdDocCode")+
               "\t"+RsArrsd->FieldByName("ArcavdDocLine")+
               "\t"+RsArrsd->FieldByName("DocCurrency")+
               "\t"+RsArrsd->FieldByName("ArcavdRAmt")+
               "\t"+RsArrsd->FieldByName("ArcavdCAmt")+
               "\t"+RsArrsd->FieldByName("ArcavdRAmt")+
               "\t"+RsArrsd->FieldByName("ArcavdCAmt")+
               "\t"+RsArrsd->FieldByName("ArcavdConv");

     sgArrsd->AddItem(ItemStr);
     RsArrsd->MoveNext();
    }
    RsArrsd->Close();
   }
   catch(Exception &e)
   {
    throw Exception(e.Message);
   }
  }
  __finally
  {
   delete RsArrsd;
  }
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::GetComObject(TComServer *comServerPtr)
{
    comServer = comServerPtr;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

void __fastcall TfrmArrsd_HY::sgArrsdDblClick(TObject *Sender)
{
    int ARow=sgArrsd->Row;
    int ACol=sgArrsd->Col;
    if (ARow < 1) return;
    if (ACol == 1)
    {
      if (sgArrsd->Cells[1][ARow] == "√")
      {
       sgArrsd->Cells[1][ARow] =  "";
       for (int i=1;i<sgArrsd->RowCount;i++)
       {
          if(sgArrsd->Cells[1][i]=="√")
          {
             btnOK->Enabled=true;
             break;
          }
          else
             btnOK->Enabled=false;
       }
      }
      else
      {
          sgArrsd->Cells[1][ARow] =  "√";
          btnOK->Enabled = true;
      }
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmArrsd_HY::bbQueryClick(TObject *Sender)
{
  if(seClientCode->Text == "")
   return;
  FillGridWithData();
}
//---------------------------------------------------------------------------

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

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

void __fastcall TfrmArrsd_HY::sgArrsdSelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
 if(sgArrsd->Cells[1][ARow]=="√")
  sgArrsd->ReadOnly=false;
 else
  sgArrsd->ReadOnly=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::seArrsdDocCodeButtonClick(TObject *Sender)
{
    AnsiString SqlStr;
    SqlStr="003[单号][日期][操作员] ";
    SqlStr+=" select distinct ArcavhCode,ArcavhDate,ArcavhUser ";
    SqlStr+=" from sdArcavh,sdArcavd where ArcavhCode=ArcavdCode ";
    SqlStr+=" and ArcavhCheck=1 and ArcavdDocType=2 ";
    SqlStr+=" and ArcavdDocCode='"+FSKDocCode+"' ";
    SqlStr+=" order by ArcavhDate DESC,ArcavhCode ";
    TfrmWnQuery *p;
    try
    {
      StartWaitForm("正在查询,请稍候...");
      p=new TfrmWnQuery(this,"应收核销单查询",SqlStr);
    }
    __finally
    {
      EndWaitForm();
    }
    if(p->ShowModal()==mrOk)
    {
      seArrsdDocCode->Text=p->ColData[1];
    }
    delete p;
}
//---------------------------------------------------------------------------

void __fastcall TfrmArrsd_HY::btnRetryClick(TObject *Sender)
{
 seArrsdDocCode->Text="";
 deBeginDate->Text="";
}
//---------------------------------------------------------------------------

void __fastcall TfrmArrsd_HY::sgArrsdSetEditText(TObject *Sender, int ACol,
      int ARow, const AnsiString Value)
{
  double dRAmt,dCAmt,dConv;
  if(sgArrsd->Cells[1][ARow] == "√" && (ACol == 10 || ACol == 11))
  {
   if(sgArrsd->Cells[10][ARow] == "")
    return;
   else
    dRAmt=StrToFloat(sgArrsd->Cells[10][ARow]);
   if(sgArrsd->Cells[11][ARow] == "")
    return;
   else
    dCAmt=StrToFloat(sgArrsd->Cells[11][ARow]);
   if(dCAmt == 0 || dRAmt == 0)
    sgArrsd->Cells[12][ARow]="0";
   else
   {
    dConv=DataCarry(dCAmt/dRAmt,2,0);
    sgArrsd->Cells[12][ARow]=FloatToStr(dConv);
   } 
  }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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