Docuref Table → Delete method
void delete(recId _interCompanyFromRecId = 0)
{
DocuValue docuValue;
Filename completeFilename, onlyFilename;
NumberSequenceCode numSeqCode;
DocuType docuType;
;
ttsbegin;
smmTransLog::initTrans(this, smmLogAction::delete);
super();
InterCompanyDocu::synchronize(this,_interCompanyFromRecId);
if (!this.existAnotherValue())
{
docuValue = DocuValue::find(this.ValueRecId, true);
if (docuValue.RecId)
{
completeFilename = this.completeFilename(this.path(true));
onlyFilename = docuValue.FileName;
docuValue.delete();
docuType = this.docuType();
if( completeFilename )
{
if (docuType.FilePlace == DocuFilePlace::Archive ||
docuType.FilePlace == DocuFilePlace::NoCopy)
{
//Check if we need to remove the physical file along with the database record
switch (docuType.RemoveOption)
{
case DocuRemoveOption::DocumentOnly:
//Keep the file
break;
case DocuRemoveOption::DocumentAndFile:
if (docuType.FileRemovalConfirmation == NoYes::No)
{
DocuOpenFile::removeFile(completeFilename);
}
else
{
switch (box::yesNoCancel(strfmt("@", completeFilename), DialogButton::Yes, “@”) )
{
case DialogButton::Yes:
DocuOpenFile::removeFile(completeFilename);
break;
case DialogButton::No:
break;
case DialogButton::Cancel: // THE PROBLEM IS OCCUR IN THİS CASE
//Throw an error to cancel transaction with delete operation
throw error("@");
}
}
break;
}
if (smmDocuments::mustArchiveFiles(docuType))
{
numSeqCode = DocuParameters::numRefDocuNumber().NumberSequence;
if (numSeqCode && onlyFilename)
{
// Delete the value in the numberseq list
NumberSeq::release(numSeqCode,onlyFilename);
}
}
}
else
{
DocuOpenFile::removeFile(completeFilename);
}
}
}
}
ttscommit;
}