修改web版功能
This commit is contained in:
parent
e3518aa05a
commit
a319843c16
@ -0,0 +1,12 @@
|
|||||||
|
#include "PolicyRecord.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PolicyRecord::PolicyRecord()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PolicyRecord::~PolicyRecord()
|
||||||
|
{
|
||||||
|
}
|
@ -0,0 +1,293 @@
|
|||||||
|
#ifndef POLICY_RECORD_H__
|
||||||
|
#define POLICY_RECORD_H__
|
||||||
|
|
||||||
|
#include <QtCore/QString>
|
||||||
|
|
||||||
|
class PolicyRecord
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
PolicyRecord();
|
||||||
|
~PolicyRecord();
|
||||||
|
|
||||||
|
|
||||||
|
PolicyRecord( const PolicyRecord & other )
|
||||||
|
: policySerial( other.policySerial ),
|
||||||
|
signDate( other.signDate ),
|
||||||
|
salerCode( other.salerCode ),
|
||||||
|
salerName( other.salerName ),
|
||||||
|
salerDeptCode( other.salerDeptCode ),
|
||||||
|
salerDeptName( other.salerDeptName ),
|
||||||
|
salerOfficeCode( other.salerOfficeCode ),
|
||||||
|
salerOfficeName( other.salerOfficeName ),
|
||||||
|
autoTraderCode( other.autoTraderCode ),
|
||||||
|
autoTraderName( other.autoTraderName ),
|
||||||
|
customerName( other.customerName ),
|
||||||
|
plateSerial( other.plateSerial ),
|
||||||
|
frameSerial( other.frameSerial ),
|
||||||
|
engineSerial( other.engineSerial ),
|
||||||
|
operatorDate( other.operatorDate ),
|
||||||
|
operatorCode( other.operatorCode ),
|
||||||
|
isAutotraderCall( other.isAutotraderCall )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
PolicyRecord( PolicyRecord && other )
|
||||||
|
: policySerial( std::move(other.policySerial) ),
|
||||||
|
signDate( std::move(other.signDate) ),
|
||||||
|
salerCode( std::move(other.salerCode) ),
|
||||||
|
salerName( std::move(other.salerName) ),
|
||||||
|
salerDeptCode( std::move(other.salerDeptCode) ),
|
||||||
|
salerDeptName( std::move(other.salerDeptName) ),
|
||||||
|
salerOfficeCode( std::move(other.salerOfficeCode) ),
|
||||||
|
salerOfficeName( std::move(other.salerOfficeName) ),
|
||||||
|
autoTraderCode( std::move(other.autoTraderCode) ),
|
||||||
|
autoTraderName( std::move(other.autoTraderName) ),
|
||||||
|
customerName( std::move(other.customerName) ),
|
||||||
|
plateSerial( std::move(other.plateSerial) ),
|
||||||
|
frameSerial( std::move(other.frameSerial) ),
|
||||||
|
engineSerial( std::move(other.engineSerial) ),
|
||||||
|
operatorDate( std::move(other.operatorDate) ),
|
||||||
|
operatorCode( std::move(other.operatorCode) ),
|
||||||
|
isAutotraderCall( other.isAutotraderCall )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
PolicyRecord & operator=( const PolicyRecord & other )
|
||||||
|
{
|
||||||
|
if ( this == &other )
|
||||||
|
return *this;
|
||||||
|
policySerial = other.policySerial;
|
||||||
|
signDate = other.signDate;
|
||||||
|
salerCode = other.salerCode;
|
||||||
|
salerName = other.salerName;
|
||||||
|
salerDeptCode = other.salerDeptCode;
|
||||||
|
salerDeptName = other.salerDeptName;
|
||||||
|
salerOfficeCode = other.salerOfficeCode;
|
||||||
|
salerOfficeName = other.salerOfficeName;
|
||||||
|
autoTraderCode = other.autoTraderCode;
|
||||||
|
autoTraderName = other.autoTraderName;
|
||||||
|
customerName = other.customerName;
|
||||||
|
plateSerial = other.plateSerial;
|
||||||
|
frameSerial = other.frameSerial;
|
||||||
|
engineSerial = other.engineSerial;
|
||||||
|
operatorDate = other.operatorDate;
|
||||||
|
operatorCode = other.operatorCode;
|
||||||
|
isAutotraderCall = other.isAutotraderCall;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
PolicyRecord & operator=( PolicyRecord && other )
|
||||||
|
{
|
||||||
|
if ( this == &other )
|
||||||
|
return *this;
|
||||||
|
policySerial = std::move( other.policySerial );
|
||||||
|
signDate = std::move( other.signDate );
|
||||||
|
salerCode = std::move( other.salerCode );
|
||||||
|
salerName = std::move( other.salerName );
|
||||||
|
salerDeptCode = std::move( other.salerDeptCode );
|
||||||
|
salerDeptName = std::move( other.salerDeptName );
|
||||||
|
salerOfficeCode = std::move( other.salerOfficeCode );
|
||||||
|
salerOfficeName = std::move( other.salerOfficeName );
|
||||||
|
autoTraderCode = std::move( other.autoTraderCode );
|
||||||
|
autoTraderName = std::move( other.autoTraderName );
|
||||||
|
customerName = std::move( other.customerName );
|
||||||
|
plateSerial = std::move( other.plateSerial );
|
||||||
|
frameSerial = std::move( other.frameSerial );
|
||||||
|
engineSerial = std::move( other.engineSerial );
|
||||||
|
operatorDate = std::move( other.operatorDate );
|
||||||
|
operatorCode = std::move( other.operatorCode );
|
||||||
|
isAutotraderCall = other.isAutotraderCall;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getPolicySerial() const
|
||||||
|
{
|
||||||
|
return policySerial;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setPolicySerial( const QString & policySerial )
|
||||||
|
{
|
||||||
|
this->policySerial = policySerial;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getSignDate() const
|
||||||
|
{
|
||||||
|
return signDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setSignDate( const QString & signDate )
|
||||||
|
{
|
||||||
|
this->signDate = signDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getSalerCode() const
|
||||||
|
{
|
||||||
|
return salerCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setSalerCode( const QString & salerCode )
|
||||||
|
{
|
||||||
|
this->salerCode = salerCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getSalerName() const
|
||||||
|
{
|
||||||
|
return salerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setSalerName( const QString & salerName )
|
||||||
|
{
|
||||||
|
this->salerName = salerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getSalerDeptCode() const
|
||||||
|
{
|
||||||
|
return salerDeptCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setSalerDeptCode( const QString & salerDeptCode )
|
||||||
|
{
|
||||||
|
this->salerDeptCode = salerDeptCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getSalerDeptName() const
|
||||||
|
{
|
||||||
|
return salerDeptName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setSalerDeptName( const QString & salerDeptName )
|
||||||
|
{
|
||||||
|
this->salerDeptName = salerDeptName;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getSalerOfficeCode() const
|
||||||
|
{
|
||||||
|
return salerOfficeCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setSalerOfficeCode( const QString & salerOfficeCode )
|
||||||
|
{
|
||||||
|
this->salerOfficeCode = salerOfficeCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getSalerOfficeName() const
|
||||||
|
{
|
||||||
|
return salerOfficeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setSalerOfficeName( const QString & salerOfficeName )
|
||||||
|
{
|
||||||
|
this->salerOfficeName = salerOfficeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getAutoTraderCode() const
|
||||||
|
{
|
||||||
|
return autoTraderCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setAutoTraderCode( const QString & autoTraderCode )
|
||||||
|
{
|
||||||
|
this->autoTraderCode = autoTraderCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getAutoTraderName() const
|
||||||
|
{
|
||||||
|
return autoTraderName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setAutoTraderName( const QString & autoTraderName )
|
||||||
|
{
|
||||||
|
this->autoTraderName = autoTraderName;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getCustomerName() const
|
||||||
|
{
|
||||||
|
return customerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setCustomerName( const QString & customerName )
|
||||||
|
{
|
||||||
|
this->customerName = customerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getPlateSerial() const
|
||||||
|
{
|
||||||
|
return plateSerial;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setPlateSerial( const QString & plateSerial )
|
||||||
|
{
|
||||||
|
this->plateSerial = plateSerial;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getFrameSerial() const
|
||||||
|
{
|
||||||
|
return frameSerial;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setFrameSerial( const QString & frameSerial )
|
||||||
|
{
|
||||||
|
this->frameSerial = frameSerial;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getEngineSerial() const
|
||||||
|
{
|
||||||
|
return engineSerial;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setEngineSerial( const QString & engineSerial )
|
||||||
|
{
|
||||||
|
this->engineSerial = engineSerial;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getOperatorDate() const
|
||||||
|
{
|
||||||
|
return operatorDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setOperatorDate( const QString & operatorDate )
|
||||||
|
{
|
||||||
|
this->operatorDate = operatorDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getOperatorCode() const
|
||||||
|
{
|
||||||
|
return operatorCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setOperatorCode( const QString & operatorCode )
|
||||||
|
{
|
||||||
|
this->operatorCode = operatorCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isIsAutotraderCall() const
|
||||||
|
{
|
||||||
|
return isAutotraderCall;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setIsAutotraderCall( const bool isAutotraderCall )
|
||||||
|
{
|
||||||
|
this->isAutotraderCall = isAutotraderCall;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString policySerial;
|
||||||
|
QString signDate;
|
||||||
|
QString salerCode;
|
||||||
|
QString salerName;
|
||||||
|
QString salerDeptCode;
|
||||||
|
QString salerDeptName;
|
||||||
|
QString salerOfficeCode;
|
||||||
|
QString salerOfficeName;
|
||||||
|
QString autoTraderCode;
|
||||||
|
QString autoTraderName;
|
||||||
|
QString customerName;
|
||||||
|
QString plateSerial;
|
||||||
|
QString frameSerial;
|
||||||
|
QString engineSerial;
|
||||||
|
QString operatorDate;
|
||||||
|
QString operatorCode;
|
||||||
|
bool isAutotraderCall;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,12 @@
|
|||||||
|
#include "QueriedPolicy.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
QueriedPolicy::QueriedPolicy()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QueriedPolicy::~QueriedPolicy()
|
||||||
|
{
|
||||||
|
}
|
@ -0,0 +1,189 @@
|
|||||||
|
|
||||||
|
#ifndef QUERIEDPOLICY_H__
|
||||||
|
#define QUERIEDPOLICY_H__
|
||||||
|
|
||||||
|
#include <QtCore/QString>
|
||||||
|
|
||||||
|
class QueriedPolicy
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QueriedPolicy();
|
||||||
|
~QueriedPolicy();
|
||||||
|
|
||||||
|
QString getPolicySerial() const
|
||||||
|
{
|
||||||
|
return policySerial;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setPolicySerial( const QString & policySerial )
|
||||||
|
{
|
||||||
|
this->policySerial = policySerial;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getSalerCode() const
|
||||||
|
{
|
||||||
|
return salerCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setSalerCode( const QString & salerCode )
|
||||||
|
{
|
||||||
|
this->salerCode = salerCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getDeptName() const
|
||||||
|
{
|
||||||
|
return deptName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setDeptName( const QString & deptName )
|
||||||
|
{
|
||||||
|
this->deptName = deptName;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getOfficeName() const
|
||||||
|
{
|
||||||
|
return officeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setOfficeName( const QString & officeName )
|
||||||
|
{
|
||||||
|
this->officeName = officeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getCdlh() const
|
||||||
|
{
|
||||||
|
return CDLH;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setCdlh( const QString & cdlh )
|
||||||
|
{
|
||||||
|
CDLH = cdlh;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getAutoTraderCode() const
|
||||||
|
{
|
||||||
|
return autoTraderCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setAutoTraderCode( const QString & autoTraderCode )
|
||||||
|
{
|
||||||
|
this->autoTraderCode = autoTraderCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getAutoTraderName() const
|
||||||
|
{
|
||||||
|
return autoTraderName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setAutoTraderName( const QString & autoTraderName )
|
||||||
|
{
|
||||||
|
this->autoTraderName = autoTraderName;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getGifts() const
|
||||||
|
{
|
||||||
|
return gifts;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setGifts( const QString & gifts )
|
||||||
|
{
|
||||||
|
this->gifts = gifts;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString getEntryDate() const
|
||||||
|
{
|
||||||
|
return entryDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setEntryDate( const QString & entryDate )
|
||||||
|
{
|
||||||
|
this->entryDate = entryDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
double getGiftPriceSum() const
|
||||||
|
{
|
||||||
|
return giftPriceSum;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setGiftPriceSum( double giftPriceSum )
|
||||||
|
{
|
||||||
|
this->giftPriceSum = giftPriceSum;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QueriedPolicy( const QueriedPolicy & other )
|
||||||
|
: policySerial( other.policySerial ),
|
||||||
|
salerCode( other.salerCode ),
|
||||||
|
deptName( other.deptName ),
|
||||||
|
officeName( other.officeName ),
|
||||||
|
CDLH( other.CDLH ),
|
||||||
|
autoTraderCode( other.autoTraderCode ),
|
||||||
|
autoTraderName( other.autoTraderName ),
|
||||||
|
gifts( other.gifts ),
|
||||||
|
entryDate( other.entryDate ),
|
||||||
|
giftPriceSum( other.giftPriceSum )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QueriedPolicy( QueriedPolicy && other ) noexcept
|
||||||
|
: policySerial( std::move(other.policySerial) ),
|
||||||
|
salerCode( std::move(other.salerCode) ),
|
||||||
|
deptName( std::move(other.deptName) ),
|
||||||
|
officeName( std::move(other.officeName) ),
|
||||||
|
CDLH( std::move(other.CDLH) ),
|
||||||
|
autoTraderCode( std::move(other.autoTraderCode) ),
|
||||||
|
autoTraderName( std::move(other.autoTraderName) ),
|
||||||
|
gifts( std::move(other.gifts) ),
|
||||||
|
entryDate( std::move(other.entryDate) ),
|
||||||
|
giftPriceSum( other.giftPriceSum )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QueriedPolicy & operator=( const QueriedPolicy & other )
|
||||||
|
{
|
||||||
|
if ( this == &other )
|
||||||
|
return *this;
|
||||||
|
policySerial = other.policySerial;
|
||||||
|
salerCode = other.salerCode;
|
||||||
|
deptName = other.deptName;
|
||||||
|
officeName = other.officeName;
|
||||||
|
CDLH = other.CDLH;
|
||||||
|
autoTraderCode = other.autoTraderCode;
|
||||||
|
autoTraderName = other.autoTraderName;
|
||||||
|
gifts = other.gifts;
|
||||||
|
entryDate = other.entryDate;
|
||||||
|
giftPriceSum = other.giftPriceSum;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
QueriedPolicy & operator=( QueriedPolicy && other ) noexcept
|
||||||
|
{
|
||||||
|
if ( this == &other )
|
||||||
|
return *this;
|
||||||
|
policySerial = std::move( other.policySerial );
|
||||||
|
salerCode = std::move( other.salerCode );
|
||||||
|
deptName = std::move( other.deptName );
|
||||||
|
officeName = std::move( other.officeName );
|
||||||
|
CDLH = std::move( other.CDLH );
|
||||||
|
autoTraderCode = std::move( other.autoTraderCode );
|
||||||
|
autoTraderName = std::move( other.autoTraderName );
|
||||||
|
gifts = std::move( other.gifts );
|
||||||
|
entryDate = std::move( other.entryDate );
|
||||||
|
giftPriceSum = other.giftPriceSum;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString policySerial;
|
||||||
|
QString salerCode;
|
||||||
|
QString deptName;
|
||||||
|
QString officeName;
|
||||||
|
QString CDLH;
|
||||||
|
QString autoTraderCode;
|
||||||
|
QString autoTraderName;
|
||||||
|
QString gifts;
|
||||||
|
QString entryDate;
|
||||||
|
double giftPriceSum;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -26,6 +26,8 @@
|
|||||||
<ClCompile Include="..\..\..\source\StringCodeConverter.cpp" />
|
<ClCompile Include="..\..\..\source\StringCodeConverter.cpp" />
|
||||||
<ClCompile Include="..\..\..\source\SystemData.cpp" />
|
<ClCompile Include="..\..\..\source\SystemData.cpp" />
|
||||||
<ClCompile Include="..\..\..\source\SystemDataQuery.cpp" />
|
<ClCompile Include="..\..\..\source\SystemDataQuery.cpp" />
|
||||||
|
<ClCompile Include="PolicyRecord.cpp" />
|
||||||
|
<ClCompile Include="QueriedPolicy.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\..\source\DataManipulation.h" />
|
<ClInclude Include="..\..\..\source\DataManipulation.h" />
|
||||||
@ -33,6 +35,8 @@
|
|||||||
<ClInclude Include="..\..\..\source\StringCodeConverter.h" />
|
<ClInclude Include="..\..\..\source\StringCodeConverter.h" />
|
||||||
<ClInclude Include="..\..\..\source\SystemData.h" />
|
<ClInclude Include="..\..\..\source\SystemData.h" />
|
||||||
<ClInclude Include="..\..\..\source\SystemDataQuery.h" />
|
<ClInclude Include="..\..\..\source\SystemDataQuery.h" />
|
||||||
|
<ClInclude Include="PolicyRecord.h" />
|
||||||
|
<ClInclude Include="QueriedPolicy.h" />
|
||||||
<QtMoc Include="..\..\..\source\QTelSalePolicyInfoQuery.h" />
|
<QtMoc Include="..\..\..\source\QTelSalePolicyInfoQuery.h" />
|
||||||
<QtMoc Include="..\..\..\source\QTelSalePolicyInfoInputWidget.h" />
|
<QtMoc Include="..\..\..\source\QTelSalePolicyInfoInputWidget.h" />
|
||||||
<QtMoc Include="..\..\..\source\QRapidInputWidget.h" />
|
<QtMoc Include="..\..\..\source\QRapidInputWidget.h" />
|
||||||
@ -183,14 +187,15 @@
|
|||||||
<ImportGroup Label="Shared" />
|
<ImportGroup Label="Shared" />
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
<Import Project="..\..\..\..\..\..\..\..\sdk\cpp\libxl\libxl-3.8.1.0\libxl_3.8.1.0_x64.props" />
|
<Import Project="..\..\..\..\..\..\..\..\..\sdk\cpp\libxl\libxl-3.8.1.0\libxl_3.8.1.0_x64.props" />
|
||||||
<Import Project="..\..\..\..\..\..\..\..\sdk\cpp\sqlapi\4.2.2\sql_api_4.2.2_vs2017_x64_debug.props" />
|
<Import Project="..\..\..\..\..\..\..\..\..\sdk\cpp\ocilib\4.5.1\ocilib_4.5.1_x64.props" />
|
||||||
<Import Project="..\..\..\..\..\..\..\..\sdk\cpp\ocilib\4.5.1\ocilib_4.5.1_x64.props" />
|
<Import Project="..\..\..\..\..\..\..\..\..\sdk\cpp\sqlapi\4.2.2\sql_api_4.2.2_vs2017_x64_debug.props" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
<Import Project="..\..\..\..\..\..\..\..\sdk\cpp\libxl\libxl-3.8.1.0\libxl_3.8.1.0_x64.props" />
|
<Import Project="..\..\..\..\..\..\..\..\..\sdk\cpp\libxl\libxl-3.8.1.0\libxl_3.8.1.0_x64.props" />
|
||||||
<Import Project="..\..\..\..\..\..\..\..\sdk\cpp\sqlapi\4.2.2\sql_api_4.2.2_vs2017_x64_release.props" />
|
<Import Project="..\..\..\..\..\..\..\..\..\sdk\cpp\ocilib\4.5.1\ocilib_4.5.1_x64.props" />
|
||||||
|
<Import Project="..\..\..\..\..\..\..\..\..\sdk\cpp\sqlapi\4.2.2\sql_api_4.2.2_vs2017_x64_release.props" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
@ -73,6 +73,15 @@
|
|||||||
<Filter Include="窗口\层叠窗口\层叠子窗口">
|
<Filter Include="窗口\层叠窗口\层叠子窗口">
|
||||||
<UniqueIdentifier>{5ed8d50c-a7a1-44fb-9a70-d0706a101021}</UniqueIdentifier>
|
<UniqueIdentifier>{5ed8d50c-a7a1-44fb-9a70-d0706a101021}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="数据\数据库操作\对象">
|
||||||
|
<UniqueIdentifier>{fe2000bd-b5b0-4e6e-8f01-523f4ea4d2d2}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="数据\数据库操作\对象\查询用对象">
|
||||||
|
<UniqueIdentifier>{90d33bfa-f36b-4430-a704-06f5c57f9462}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="数据\数据库操作\对象\保单对象">
|
||||||
|
<UniqueIdentifier>{1c207223-121f-4a0e-a313-ccb5c23c1a76}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\..\source\sqlite\sqlite3.c">
|
<ClCompile Include="..\..\..\source\sqlite\sqlite3.c">
|
||||||
@ -120,6 +129,12 @@
|
|||||||
<ClCompile Include="..\..\..\source\QMainWidget.cpp">
|
<ClCompile Include="..\..\..\source\QMainWidget.cpp">
|
||||||
<Filter>窗口\层叠窗口\层叠子窗口</Filter>
|
<Filter>窗口\层叠窗口\层叠子窗口</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="QueriedPolicy.cpp">
|
||||||
|
<Filter>数据\数据库操作\对象\查询用对象</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="PolicyRecord.cpp">
|
||||||
|
<Filter>数据\数据库操作\对象\保单对象</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\..\source\sqlite\sqlite3.h">
|
<ClInclude Include="..\..\..\source\sqlite\sqlite3.h">
|
||||||
@ -143,6 +158,12 @@
|
|||||||
<ClInclude Include="..\..\..\source\Parameters.h">
|
<ClInclude Include="..\..\..\source\Parameters.h">
|
||||||
<Filter>数据\参数管理</Filter>
|
<Filter>数据\参数管理</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="QueriedPolicy.h">
|
||||||
|
<Filter>数据\数据库操作\对象\查询用对象</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="PolicyRecord.h">
|
||||||
|
<Filter>数据\数据库操作\对象\保单对象</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Image Include="..\..\..\source\Resources\car.png">
|
<Image Include="..\..\..\source\Resources\car.png">
|
||||||
|
@ -45,43 +45,43 @@ const static char g_cszConnstringYwgl[] =
|
|||||||
const static char g_cszUserNameYwgl[] = "ccx99";
|
const static char g_cszUserNameYwgl[] = "ccx99";
|
||||||
const static char g_cszPasswordYwgl[] = "c92IT09";
|
const static char g_cszPasswordYwgl[] = "c92IT09";
|
||||||
|
|
||||||
void queryTelsalePolicyGifts(vector<TelSalePolicyGift>& giftList)
|
// void queryTelsalePolicyGifts(vector<TelSalePolicyGift>& giftList)
|
||||||
{
|
// {
|
||||||
SAConnection connection;
|
// SAConnection connection;
|
||||||
SACommand command;
|
// SACommand command;
|
||||||
|
//
|
||||||
string strSQL = "select id, trim(name), default_price from w_dx_gifts";
|
// string strSQL = "select id, trim(name), default_price from w_dx_gifts";
|
||||||
|
//
|
||||||
command.setConnection(&connection);
|
// command.setConnection(&connection);
|
||||||
command.setCommandText(strSQL.c_str());
|
// command.setCommandText(strSQL.c_str());
|
||||||
|
//
|
||||||
try
|
// try
|
||||||
{
|
// {
|
||||||
connection.Connect(g_cszConnstringYwgl,
|
// connection.Connect(g_cszConnstringYwgl,
|
||||||
g_cszUserNameYwgl,
|
// g_cszUserNameYwgl,
|
||||||
g_cszPasswordYwgl,
|
// g_cszPasswordYwgl,
|
||||||
SA_Informix_Client);
|
// SA_Informix_Client);
|
||||||
|
//
|
||||||
command.Execute();
|
// command.Execute();
|
||||||
}
|
// }
|
||||||
catch (SAException& error)
|
// catch (SAException& error)
|
||||||
{
|
// {
|
||||||
throw runtime_error(error.ErrText());
|
// throw runtime_error(error.ErrText());
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
while (command.FetchNext())
|
// while (command.FetchNext())
|
||||||
{
|
// {
|
||||||
TelSalePolicyGift gift;
|
// TelSalePolicyGift gift;
|
||||||
|
//
|
||||||
gift.Id(command.Field(1).asLong());
|
// gift.Id(command.Field(1).asLong());
|
||||||
gift.GiftName((const char *)(command.Field(2).asString()));
|
// gift.GiftName((const char *)(command.Field(2).asString()));
|
||||||
gift.GiftDefaultPrice((const char *)(command.Field(3).asString()));
|
// gift.GiftDefaultPrice((const char *)(command.Field(3).asString()));
|
||||||
|
//
|
||||||
giftList.push_back(gift);
|
// giftList.push_back(gift);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
connection.Disconnect();
|
// connection.Disconnect();
|
||||||
}
|
// }
|
||||||
|
|
||||||
void SaveTelSalePolicyInfo(const SPolicyRecord& policy, const vector<TelSalePolicyGift>& giftList)
|
void SaveTelSalePolicyInfo(const SPolicyRecord& policy, const vector<TelSalePolicyGift>& giftList)
|
||||||
{
|
{
|
||||||
@ -286,7 +286,7 @@ void QueryTelSalePolicyInfo(const string& strPolicyNo,
|
|||||||
policy.strInputDate = command.Field("czrq").asString();
|
policy.strInputDate = command.Field("czrq").asString();
|
||||||
policy.strCDLH = command.Field("chdlh").asString();
|
policy.strCDLH = command.Field("chdlh").asString();
|
||||||
|
|
||||||
QueryPolicyGifts(policy.strPolicySerial, policy.strGifts, policy.dGiftPriceSum);
|
//QueryPolicyGifts(policy.strPolicySerial, policy.strGifts, policy.dGiftPriceSum);
|
||||||
|
|
||||||
vPolicyInfo.push_back(policy);
|
vPolicyInfo.push_back(policy);
|
||||||
}
|
}
|
||||||
@ -299,66 +299,66 @@ void QueryTelSalePolicyInfo(const string& strPolicyNo,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QueryPolicyGifts(const string& strPolicyNo, string& strGifts, double dGiftPriceSum)
|
// void QueryPolicyGifts(const string& strPolicyNo, string& strGifts, double dGiftPriceSum)
|
||||||
{
|
// {
|
||||||
SAConnection connection;
|
// SAConnection connection;
|
||||||
SACommand command;
|
// SACommand command;
|
||||||
|
//
|
||||||
string strSQL =
|
// string strSQL =
|
||||||
"select gift_name, gift_price "
|
// "select gift_name, gift_price "
|
||||||
" from w_dxbd_gift_i "
|
// " from w_dxbd_gift_i "
|
||||||
" where bdh = '" + strPolicyNo + "'";
|
// " where bdh = '" + strPolicyNo + "'";
|
||||||
|
//
|
||||||
string strSQLSum =
|
// string strSQLSum =
|
||||||
"select sum( gift_price ) "
|
// "select sum( gift_price ) "
|
||||||
" from w_dxbd_gift_i "
|
// " from w_dxbd_gift_i "
|
||||||
" where bdh = '" + strPolicyNo + "'";
|
// " where bdh = '" + strPolicyNo + "'";
|
||||||
|
//
|
||||||
try
|
// try
|
||||||
{
|
// {
|
||||||
command.setConnection(&connection);
|
// command.setConnection(&connection);
|
||||||
command.setCommandText(strSQL.c_str());
|
// command.setCommandText(strSQL.c_str());
|
||||||
|
//
|
||||||
connection.Connect(g_cszConnstringYwgl,
|
// connection.Connect(g_cszConnstringYwgl,
|
||||||
g_cszUserNameYwgl,
|
// g_cszUserNameYwgl,
|
||||||
g_cszPasswordYwgl,
|
// g_cszPasswordYwgl,
|
||||||
SA_Informix_Client);
|
// SA_Informix_Client);
|
||||||
|
//
|
||||||
command.Execute();
|
// command.Execute();
|
||||||
|
//
|
||||||
strGifts.clear();
|
// strGifts.clear();
|
||||||
dGiftPriceSum = 0.0;
|
// dGiftPriceSum = 0.0;
|
||||||
|
//
|
||||||
while (command.FetchNext())
|
// while (command.FetchNext())
|
||||||
{
|
// {
|
||||||
if (!strGifts.empty())
|
// if (!strGifts.empty())
|
||||||
{
|
// {
|
||||||
strGifts.append("; ");
|
// strGifts.append("; ");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
strGifts.append(command.Field("gift_name").asString());
|
// strGifts.append(command.Field("gift_name").asString());
|
||||||
strGifts.append(" ");
|
// strGifts.append(" ");
|
||||||
strGifts.append(command.Field("gift_price").asString());
|
// strGifts.append(command.Field("gift_price").asString());
|
||||||
strGifts.append("元");
|
// strGifts.append("元");
|
||||||
|
//
|
||||||
dGiftPriceSum += command.Field("gift_price").asDouble();
|
// dGiftPriceSum += command.Field("gift_price").asDouble();
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/*command.setCommandText( strSQLSum.c_str() );
|
// /*command.setCommandText( strSQLSum.c_str() );
|
||||||
command.Execute();
|
// command.Execute();
|
||||||
|
//
|
||||||
if ( command.FetchNext() )
|
// if ( command.FetchNext() )
|
||||||
{
|
// {
|
||||||
strGiftPriceSum = command.Field( 0 ).asString();
|
// strGiftPriceSum = command.Field( 0 ).asString();
|
||||||
}*/
|
// }*/
|
||||||
|
//
|
||||||
connection.Disconnect();
|
// connection.Disconnect();
|
||||||
}
|
// }
|
||||||
catch (SAException& error)
|
// catch (SAException& error)
|
||||||
{
|
// {
|
||||||
throw runtime_error(error.ErrText());
|
// throw runtime_error(error.ErrText());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
/*void readTelsaleXlsFile(const string strFilePath, vector<SPolicyRecord> & listPolicy, bool hasTitle, bool isXML )
|
/*void readTelsaleXlsFile(const string strFilePath, vector<SPolicyRecord> & listPolicy, bool hasTitle, bool isXML )
|
||||||
|
@ -47,27 +47,7 @@ typedef struct
|
|||||||
bool bIsAutotraderCall;
|
bool bIsAutotraderCall;
|
||||||
} SPolicyRecord;
|
} SPolicyRecord;
|
||||||
|
|
||||||
class PolicyRecord
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
QString policySerial;
|
|
||||||
QString signDate;
|
|
||||||
QString salerCode;
|
|
||||||
QString salerName;
|
|
||||||
QString salerDeptCode;
|
|
||||||
QString salerDeptName;
|
|
||||||
QString salerOfficeCode;
|
|
||||||
QString salerOfficeName;
|
|
||||||
QString autoTraderCode;
|
|
||||||
QString autoTraderName;
|
|
||||||
QString customerName;
|
|
||||||
QString plateSerial;
|
|
||||||
QString frameSerial;
|
|
||||||
QString engineSerial;
|
|
||||||
QString operatorDate;
|
|
||||||
QString operatorCode;
|
|
||||||
bool isAutotraderCall;
|
|
||||||
};
|
|
||||||
|
|
||||||
//准备废弃
|
//准备废弃
|
||||||
typedef struct
|
typedef struct
|
||||||
@ -84,6 +64,8 @@ typedef struct
|
|||||||
string strInputDate;
|
string strInputDate;
|
||||||
} SPolicyQuery;
|
} SPolicyQuery;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TelSalePolicyGift
|
class TelSalePolicyGift
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -91,20 +73,20 @@ public:
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
TelSalePolicyGift(int id, const string & name, const string & defaultPrice) : m_id(id),
|
TelSalePolicyGift( int id, const string & name, const string & defaultPrice ) : m_id( id ),
|
||||||
m_giftName(name),
|
m_giftName( name ),
|
||||||
m_giftDefaultPrice(defaultPrice)
|
m_giftDefaultPrice( defaultPrice )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int Id() const { return m_id; }
|
inline int Id() const { return m_id; }
|
||||||
void Id(int val) { m_id = val; }
|
void Id( int val ) { m_id = val; }
|
||||||
|
|
||||||
string GiftName() const { return m_giftName; }
|
string GiftName() const { return m_giftName; }
|
||||||
void GiftName(string val) { m_giftName = val; }
|
void GiftName( string val ) { m_giftName = val; }
|
||||||
|
|
||||||
string GiftDefaultPrice() const { return m_giftDefaultPrice; }
|
string GiftDefaultPrice() const { return m_giftDefaultPrice; }
|
||||||
void GiftDefaultPrice(string val) { m_giftDefaultPrice = val; }
|
void GiftDefaultPrice( string val ) { m_giftDefaultPrice = val; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_id;
|
int m_id;
|
||||||
@ -121,7 +103,7 @@ private:
|
|||||||
// Qualifier: 查询礼品信息
|
// Qualifier: 查询礼品信息
|
||||||
// Parameter: vector<TelSalePolicyGift> & giftList 礼品列表
|
// Parameter: vector<TelSalePolicyGift> & giftList 礼品列表
|
||||||
//************************************
|
//************************************
|
||||||
void queryTelsalePolicyGifts(vector<TelSalePolicyGift> & giftList);
|
//void queryTelsalePolicyGifts(vector<TelSalePolicyGift> & giftList);
|
||||||
|
|
||||||
//************************************
|
//************************************
|
||||||
// Method: SaveTelSalePolicyInfo
|
// Method: SaveTelSalePolicyInfo
|
||||||
@ -132,7 +114,7 @@ void queryTelsalePolicyGifts(vector<TelSalePolicyGift> & giftList);
|
|||||||
// Parameter: const SPolicyRecord & policy
|
// Parameter: const SPolicyRecord & policy
|
||||||
// Parameter: const vector<TelSalePolicyGift> & giftList
|
// Parameter: const vector<TelSalePolicyGift> & giftList
|
||||||
//************************************
|
//************************************
|
||||||
void SaveTelSalePolicyInfo(const SPolicyRecord & policy, const vector<TelSalePolicyGift> & giftList);
|
void SaveTelSalePolicyInfo( const SPolicyRecord & policy, const vector<TelSalePolicyGift> & giftList );
|
||||||
|
|
||||||
//************************************
|
//************************************
|
||||||
// Method: QueryTelSalePolicyInfo
|
// Method: QueryTelSalePolicyInfo
|
||||||
@ -146,11 +128,11 @@ void SaveTelSalePolicyInfo(const SPolicyRecord & policy, const vector<TelSalePol
|
|||||||
// Parameter: const string & strEndDate
|
// Parameter: const string & strEndDate
|
||||||
// Parameter: vector<SPolicyQuery> & vPolicyInfo
|
// Parameter: vector<SPolicyQuery> & vPolicyInfo
|
||||||
//************************************
|
//************************************
|
||||||
void QueryTelSalePolicyInfo(const string & strPolicyNo,
|
void QueryTelSalePolicyInfo( const string & strPolicyNo,
|
||||||
const string & strOperatorCode,
|
const string & strOperatorCode,
|
||||||
const string & strStartDate,
|
const string & strStartDate,
|
||||||
const string & strEndDate,
|
const string & strEndDate,
|
||||||
vector<SPolicyQuery> & vPolicyInfo);
|
vector<SPolicyQuery> & vPolicyInfo );
|
||||||
|
|
||||||
//************************************
|
//************************************
|
||||||
// Method: QueryPolicyGifts
|
// Method: QueryPolicyGifts
|
||||||
@ -161,13 +143,13 @@ void QueryTelSalePolicyInfo(const string & strPolicyNo,
|
|||||||
// Parameter: const string & strPolicyNo
|
// Parameter: const string & strPolicyNo
|
||||||
// Parameter: string & strGifts
|
// Parameter: string & strGifts
|
||||||
//************************************
|
//************************************
|
||||||
void QueryPolicyGifts(const string & strPolicyNo,
|
// void QueryPolicyGifts(const string & strPolicyNo,
|
||||||
string & strGifts,
|
// string & strGifts,
|
||||||
double dGiftPriceSum);
|
// double dGiftPriceSum);
|
||||||
|
|
||||||
//void readTelsaleXlsFile( const string & strFilePath, vector<SPolicyRecord> & listPolicy, bool hasTitle, bool isXML );
|
//void readTelsaleXlsFile( const string & strFilePath, vector<SPolicyRecord> & listPolicy, bool hasTitle, bool isXML );
|
||||||
|
|
||||||
void readTelsaleXlsxFile(const wstring & filePath, vector<SPolicyRecord> & listPolicy, bool hasTitle);
|
void readTelsaleXlsxFile( const wstring & filePath, vector<SPolicyRecord> & listPolicy, bool hasTitle );
|
||||||
|
|
||||||
/************************************************
|
/************************************************
|
||||||
* \brief 读取xls文件的单元格内容,返回std::string
|
* \brief 读取xls文件的单元格内容,返回std::string
|
||||||
@ -176,7 +158,7 @@ void readTelsaleXlsxFile(const wstring & filePath, vector<SPolicyRecord> & listP
|
|||||||
* \param iColIndex 列索引
|
* \param iColIndex 列索引
|
||||||
* \return 返回读取的单元格内容,以std::string为载体
|
* \return 返回读取的单元格内容,以std::string为载体
|
||||||
************************************************/
|
************************************************/
|
||||||
string readXlsCell(ISheetT<char> * pSheet, int iRowIndex, int iColIndex);
|
string readXlsCell( ISheetT<char> * pSheet, int iRowIndex, int iColIndex );
|
||||||
|
|
||||||
/************************************************
|
/************************************************
|
||||||
* \brief 读取xlsx文件的单元格内容,返回std::string
|
* \brief 读取xlsx文件的单元格内容,返回std::string
|
||||||
@ -185,6 +167,6 @@ string readXlsCell(ISheetT<char> * pSheet, int iRowIndex, int iColIndex);
|
|||||||
* \param iColIndex 列索引
|
* \param iColIndex 列索引
|
||||||
* \return 返回读取的单元格内容,以std::string为载体
|
* \return 返回读取的单元格内容,以std::string为载体
|
||||||
************************************************/
|
************************************************/
|
||||||
string readXlsxCell(ISheetT<wchar_t> * pSheet, int iRowIndex, int iColIndex);
|
string readXlsxCell( ISheetT<wchar_t> * pSheet, int iRowIndex, int iColIndex );
|
||||||
|
|
||||||
#endif // DataManipulation_h__
|
#endif // DataManipulation_h__
|
||||||
|
@ -168,6 +168,9 @@
|
|||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="2" column="1">
|
||||||
<widget class="QLineEdit" name="pEditPassword">
|
<widget class="QLineEdit" name="pEditPassword">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
<property name="maxLength">
|
<property name="maxLength">
|
||||||
<number>999</number>
|
<number>999</number>
|
||||||
</property>
|
</property>
|
||||||
@ -284,7 +287,7 @@
|
|||||||
<layoutdefault spacing="6" margin="11"/>
|
<layoutdefault spacing="6" margin="11"/>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="resource.qrc"/>
|
<include location="resource.qrc"/>
|
||||||
<include location="resources.qrc"/>
|
<include location="resource.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
@ -86,7 +86,7 @@ void QTelSalePolicyInfoInputWidget::InitGiftTable()
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
queryTelsalePolicyGifts( giftsList );
|
//queryTelsalePolicyGifts( giftsList );
|
||||||
}
|
}
|
||||||
catch ( runtime_error & error )
|
catch ( runtime_error & error )
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user