apcavd.cpp

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

CPP
247
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Apcavd.h"
#include "Apcavh.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "StdBaseForm"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"
TfrmApcavd *frmApcavd;
//---------------------------------------------------------------------------
__fastcall TfrmApcavd::TfrmApcavd(TComponent* Owner)
        : TStdBaseForm(Owner)
{
    InitControlGroup();
    btnOK->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::GetComObject(TComServer *comServerPtr)
{
    comServer = comServerPtr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::InitControlGroup()
{
    sgApcavd->RowCount = 1;
    seApcavhAmt->Text=frmApcavh->m_Amt;
    scApcavdDocType->AddItems("应付发票","1");
    scApcavdDocType->AddItems("应付单","2");
    scApcavdDocType->ItemIndex=0;
    seApcavdDocCode->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::seApcavdDocCodeButtonClick(TObject *Sender)
{
    AnsiString SqlStr;
    TfrmWnQuery *p;
    if(scApcavdDocType->ItemIndex==-1)
       return;
    try
    {
        StartWaitForm("正在查询,请稍候...");
        if(scApcavdDocType->ItemData[1]=="1")
        {
         SqlStr="003[应付发票号][日期][币种]";
         SqlStr+=" select distinct apivhCode,Apivhdate,ApivhCurrency from sdapivh,sdApivd ";
         SqlStr+=" where ApivdCode=ApivhCode and Apivhcheck=1 and APIVHRED=1 and (ApivdAmt-ApivdCAmt-ApivdRAmt)>0  order by Apivhcode";
         p=new TfrmWnQuery(this,"应付发票查询",SqlStr);
        }
        if(scApcavdDocType->ItemData[1]=="2")
        {
         SqlStr="003[应付单号][日期][币种]";
         SqlStr+=" select apobCode,Apobdate,ApobCurrency from sdapob ";
         SqlStr+=" where Apobcheck=1 and ApobRed=1 and (ApobAmt-ApobCAmt-ApobRAmt)>0 order by Apobcode";
         p=new TfrmWnQuery(this,"应付单查询",SqlStr);
        }
     }
     __finally
     {
       EndWaitForm();
     }
     if(p->ShowModal()==mrOk)
     {
      seApcavdDocCode->Text=p->ColData[1];
      FillGridWithData();
     }
     delete p;

}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::FillGridWithData()
{
    AnsiString  ItemStr,s_SQL,m_Trate;
    TComResultSet *RsApcavd;
    if(scApcavdDocType->ItemIndex==-1)
       return;
    if(scApcavdDocType->ItemData[1]=="1")
    {
      s_SQL="select type='1',code=apivdCODE,line=ApivdLine,TAmt=(ApivdAmt-ApivdCAmt-ApivdRAmt),CAmt=ApivdCAmt" ;
      s_SQL+=" from sdApivd where apivdCODE='"+seApcavdDocCode->Text+"'";
    }
    else
    {
      s_SQL="select type='2',code=apobCODE,line='0',TAmt=(ApobAmt-ApobCAmt-ApobRAmt),CAmt=ApobCAmt" ;
      s_SQL+=" from sdApob where apobCODE='"+seApcavdDocCode->Text+"'";
    }
    try
    {
      StartWaitForm("正在查询数据,请稍候......");
      RsApcavd=new  TComResultSet(Handle,g_ClientHandle);
      RsApcavd->Open(s_SQL,"");
      while( RsApcavd->Eof == 0)
      {
         ItemStr="\t"+AnsiString("") +
                 "\t"+RsApcavd->FieldByName("type")+
                 "\t"+RsApcavd->FieldByName("code")+
                 "\t"+RsApcavd->FieldByName("line")+
                 "\t"+RsApcavd->FieldByName("TAmt")+
                  "\t"+RsApcavd->FieldByName("CAmt")+
                 "\t"+"1"  ;
         sgApcavd->AddItem(ItemStr);
        RsApcavd->MoveNext();
      }
      RsApcavd->Close();
    }
    __finally
    {
      EndWaitForm();
    }

}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::sgApcavdDblClick(TObject *Sender)
{
    AnsiString SqlStr;
    int ARow=sgApcavd->Row;
    if (ARow >0)
    {
      if(sgApcavd->Col==1)
      {
        if (sgApcavd->Cells[1][ARow] == "√")
        {
         sgApcavd->Cells[1][ARow] =  "";
         for (int i=1;i<sgApcavd->RowCount;i++)
         {
            if(sgApcavd->Cells[1][i]=="√")
            {
               btnOK->Enabled=true;
               break;
            }
            else
               btnOK->Enabled=false;
         }
        }
        else
        {
          sgApcavd->Cells[1][ARow] =  "√";
          btnOK->Enabled=true;
        }
      }
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::bbSelAllClick(TObject *Sender)
{
    for(int i=1;i<sgApcavd->RowCount;i++)
      sgApcavd->Cells[1][i] = "√";
    btnOK->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::bbSelNoneClick(TObject *Sender)
{
    for(int i=1;i<sgApcavd->RowCount;i++)
      sgApcavd->Cells[1][i] = "";
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::btnOKClick(TObject *Sender)
{
    int ErrNum;
    try
    {
      StartWaitForm("正在生成核销单,请稍候......");
      if(sgApcavd->RowCount>1)
      {
       int j;
       j=comServer->ItemCount-1;
       if(j>=0)
       {
        comServer->LocateItemByIndex(j);
        j=StrToInt(frmApcavh->GetDetailValue("ApcavdLine"));
        j=j+1;
       }
       else
        j=1;
       try
       {
        for(int i=1;i<sgApcavd->RowCount;i++)
        {
         if(sgApcavd->Cells[1][i]=="√")
         {
           comServer->AddItem();
           if(sgApcavd->Cells[6][i]=="")
              throw Exception("请输入换算系数!");
           if(sgApcavd->Cells[7][i]=="")
              throw Exception("请输入核销金额!");
           SetDetailValue("ApcavdCode",frmApcavh->seApcavhCode->Text);
           SetDetailValue("ApcavdLine",AnsiString(j));
           SetDetailValue("ApcavdDocType",scApcavdDocType->ItemData[1]);
           SetDetailValue("ApcavdDocCode",sgApcavd->Cells[3][i]);
           SetDetailValue("ApcavdDocLine",sgApcavd->Cells[4][i]);
           SetDetailValue("ApcavdPAmt",sgApcavd->Cells[5][i]);
           SetDetailValue("ApcavdCAmt",sgApcavd->Cells[6][i]);
           SetDetailValue("ApcavdConv",sgApcavd->Cells[7][i]);
           SetDetailValue("ApcavdDesc",sgApcavd->Cells[8][i]);
           comServer->AddToObject();
           j=j+1;
         }
        }
       }
       catch(Exception &e)
       {
        comServer->FreeItem();
        this->ModalResult=0;
        throw Exception(e.Message);
       }
      }
    }
    __finally
    {
     EndWaitForm();
    }
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::btnCancelClick(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::sgApcavdKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    if(Key==13 )
    {
     AnsiString Temp1,Temp2;
     Temp1=sgApcavd->Cells[5][sgApcavd->Row];
     if(Temp1.IsEmpty())
       return;
     Temp2=sgApcavd->Cells[6][sgApcavd->Row];
     if(Temp2.IsEmpty())
       return;
     sgApcavd->Cells[7][sgApcavd->Row]=AnsiString(Temp1.ToDouble()/Temp2.ToDouble());

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




⌨️ 快捷键说明

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