Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

У в ходящего счёта добавлена возможность редактировать расположение отметки "Оплачено" в редакторе отметок #33

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
1. Все документы. Изменен логотип и цвет отметки на фиолетовый. В отметку добавлена дата и время подписания.
<br>**Точки входа:** серверные методы [GetSignatureMarkForSimpleSignatureAsHtml](https://github.com/DirectumCompany/rx-examples/blob/master/src/Packages/Sungero.Examples/Sungero.Examples.Server/Sungero.Docflow/ModuleServerFunctions.cs#L22-L35) и [GetSignatureMarkForCertificateAsHtml](https://github.com/DirectumCompany/rx-examples/blob/master/src/Packages/Sungero.Examples/Sungero.Examples.Server/Sungero.Docflow/ModuleServerFunctions.cs#L48-L74) модуля Docflow.

2. Входящий счёт. Цвет отметки изменён на красный, текст отметки изменен на "ПРИНЯТО К ОПЛАТЕ".
2. Входящий счёт. Цвет отметки изменён на красный, текст отметки изменен на "ПРИНЯТО К ОПЛАТЕ".
<br>**Точка входа:** серверный метод [GetSignatureMarkAsHtml](https://github.com/DirectumCompany/rx-examples/blob/master/src/Packages/Sungero.Examples/Sungero.Examples.Server/IncomingInvoice/IncomingInvoiceServerFunctions.cs#L17-L29) документа IncomingInvoice.

3. Все документы. Изменено условие для интерактивного преобразования документов. Теперь изображения в формате jpg размером < 1 Mb конвертируются интерактивно.
Expand All @@ -36,25 +36,25 @@
4. Служебная записка. На первой странице документа, в верхнем левом углу поставить отметки о всех подписях документа. Отметки ставятся сверху вниз, с небольшим отступом друг от друга.
<br>**Точка входа:** серверный метод [ConvertToPdfAndAddSignatureMark](https://github.com/DirectumCompany/rx-examples/blob/master/src/Packages/Sungero.Examples/Sungero.Examples.Server/Memo/MemoServerFunctions.cs#L48-L128) документа Memo.

5. Договор и дополнительное соглашение. Постраничная отметка об ЭП с поворотом.
5. Договор и дополнительное соглашение. Постраничная отметка об ЭП с поворотом. Редактор отметок скрыт, т.к. данный вид отметки не поддерживается.
<br>**Точки входа:** серверные методы [ConvertToPdfWithMarks](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/ContractualDocument/ContractualDocumentServerFunctions.cs#L17-L24), [UpdateContractPaginalApproveMark](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/ContractualDocument/ContractualDocumentServerFunctions.cs#L30-L48), [GetContractualApprovedMarkAsHtml](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/ContractualDocument/ContractualDocumentServerFunctions.cs#L56-L68) документа ContractualDocument, серверный метод [GetApprovedMarkAsHtml](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Contract/ContractServerFunctions.cs#L17-L20) документа Contract, серверный метод [GetApprovedMarkAsHtml](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/SupAgreement/SupAgreementServerFunctions.cs#L17-L20) документа SupAgreement
<br>**Инициализация:** [CreateCustomMarkKinds](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Sungero.Docflow/ModuleInitializer.cs#L21-L43) модуля Docflow.
<br>**Константы:** [PaginalApproveMarkKindSid](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/Contract/ContractConstants.cs#L10), [PaginalApproveMarkKindClass](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/Contract/ContractConstants.cs#L14), [PaginalApproveMarkKindMethod](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/Contract/ContractConstants.cs#L18) документа Contract, [PaginalApproveMarkKindSid](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/SupAgreement/SupAgreementConstants.cs#L10), [PaginalApproveMarkKindClass](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/SupAgreement/SupAgreementConstants.cs#L14), [PaginalApproveMarkKindMethod](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/SupAgreement/SupAgreementConstants.cs#L18) документа SupAgreement.

6. Служебная записка. Простановка на первой странице отметок о всех подписях документа.
6. Служебная записка. Простановка на первой странице отметок о всех подписях документа. Редактор отметок скрыт, т.к. данный вид отметки не поддерживается.
<br>**Точки входа:** серверные методы [ConvertToPdfWithMarks](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Memo/MemoServerFunctions.cs#L19-L25), [UpdateMemoSignMark](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Memo/MemoServerFunctions.cs#L31-L44), [GetOrCreateSignatureBasedMark](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Memo/MemoServerFunctions.cs#L52-L69), [GetOrCreateSignatureMark](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Memo/MemoServerFunctions.cs#L76-L80), [GetMemoSignMarkAsHtml](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Memo/MemoServerFunctions.cs#L87-L91), [GetDocumentSignatures](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Memo/MemoServerFunctions.cs#L98-L105) документы Memo, серверные методы [GetContent](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Mark/MarkServerFunctions.cs#L17-L36), [GetContentWithSignerInfo](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Mark/MarkServerFunctions.cs#L44-L50) справочника Mark.
<br>**Инициализация:** [CreateCustomMarkKinds](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Sungero.Docflow/ModuleInitializer.cs#L21-L43) модуля Docflow.
<br>**Константы:** [SignMarkKindSid](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/Memo/MemoConstants.cs#L10), [SignMarkKindClass](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/Memo/MemoConstants.cs#L14), [SignMarkKindMethod](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/Memo/MemoConstants.cs#L18), [MarkSignatureIdKey](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/Memo/MemoConstants.cs#L22) документа Memo.

7. Протокол. Простановка на пустой странице отметки со всеми подпиясми документа.
7. Протокол. Простановка на пустой странице отметки со всеми подписями документа. Редактор отметок скрыт, т.к. данный вид отметки не поддерживается.
<br>**Точки входа:** серверные методы [GetOrCreateSignatureMark](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Minutes/MinutesServerFunctions.cs#L16-L23), [DeleteVersionMark](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Minutes/MinutesServerFunctions.cs#L31-L38), [GetMinutesMarkAsHtml](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Minutes/MinutesServerFunctions.cs#L45-L66) документа Minute.
<br>**Инициализация:** [CreateCustomMarkKinds](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Sungero.Docflow/ModuleInitializer.cs#L21-L43) модуля Docflow.
<br>**Константы:** [MinutesMarkKindGuid](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/Minutes/MinutesConstants.cs#L9), [MinutesMarkKindClass](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/Minutes/MinutesConstants.cs#L12), [MinutesMarkKindMethod](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/Minutes/MinutesConstants.cs#L15) документа Minute

### Преобразование в PDF и наложение отметки об оплате

1. Входящий счет. Простановка отметки об оплате.
<br>**Точки входа:** серверный метод [ConvertToPdfWithMarks](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/IncomingInvoice/IncomingInvoiceServerFunctions.cs#L18-L25), [UpdateInvoicePaymentMark](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/IncomingInvoice/IncomingInvoiceServerFunctions.cs#L33-L48), [GetPaymentMarkAsHtml](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/IncomingInvoice/IncomingInvoiceServerFunctions.cs#L54-L57) документа IncomingInvoice.
<br>**Точки входа:** разделяемый метод [UpdateMarksBeforeConversion](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/IncomingInvoice/IncomingInvoiceSharedFunctions.cs#L21-L28), серверные методы [UpdateInvoicePaymentMark](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/IncomingInvoice/IncomingInvoiceServerFunctions.cs#L33-L48), [GetPaymentMarkAsHtml](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/IncomingInvoice/IncomingInvoiceServerFunctions.cs#L54-L57), [ValidateMarksDataBeforeOpenMarkEditor](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/IncomingInvoice/IncomingInvoiceServerFunctions.cs#L143-L168), [ValidateMarksDataBeforeConversion](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/IncomingInvoice/IncomingInvoiceServerFunctions.cs#L176-L206) документа IncomingInvoice.
<br>**Инициализация:** [CreateCustomMarkKinds](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Server/Sungero.Docflow/ModuleInitializer.cs#L21-L43) модуля Docflow.
<br>**Константы:** [PaymentMarkKindSid](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/IncomingInvoice/IncomingInvoiceConstants.cs#L10), [PaymentMarkKindClass](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/IncomingInvoice/IncomingInvoiceConstants.cs#L14), [PaymentMarkKindMethod](https://github.com/DirectumCompany/rx-examples/blob/4.11/src/Packages/Sungero.Examples/Sungero.Examples.Shared/IncomingInvoice/IncomingInvoiceConstants.cs#L18) документа IncomingInvoice.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,34 +10,23 @@ namespace Sungero.Examples.Server
{
partial class IncomingInvoiceFunctions
{
/// <summary>
/// Преобразовать документ в PDF с простановкой отметок.
/// </summary>
/// <param name="versionId">ИД версии, на которую будут проставлены отметки.</param>
/// <returns>Результат преобразования.</returns>
public override Sungero.Docflow.Structures.OfficialDocument.IConversionToPdfResult ConvertToPdfWithMarks(long versionId)
{
/// Пример перекрытия, в котором при выполнении действия
/// "Создать PDF-документ с отметками" для входящих счетов с состоянием "Оплачен"
/// добавляется отметка "Оплачено" на преобразованный PDF-документ.
this.UpdateInvoicePaymentMark();
return base.ConvertToPdfWithMarks(versionId);
}

/// <summary>
/// Сохранить отметку для простановки на PDF документе с состоянием "Оплачено".
/// Удалить отметку в случае, если состояние документа было изменено
/// с "Оплачено" на другое.
/// </summary>
[Public]
[Public, Remote]
public virtual void UpdateInvoicePaymentMark()
{
if (_obj.LifeCycleState == Sungero.Contracts.IncomingInvoice.LifeCycleState.Paid)
{
var mark = GetOrCreateMark(IncomingInvoiceConstants.PaymentMarkKindSid);
mark.XIndent = 12;
mark.YIndent = 20;
mark.Page = -1;
if (!mark.XIndent.HasValue)
mark.XIndent = 12;
if (!mark.YIndent.HasValue)
mark.YIndent = 20;
if (!mark.Page.HasValue)
mark.Page = -1;
mark.Save();
}
else
Expand Down Expand Up @@ -150,5 +139,70 @@ public virtual string GetSignatureMarkForCertificateAsHtml(Sungero.Domain.Shared
}
return html;
}

/// <summary>
/// Проверить свойства документа, необходимые для простановки отметок, перед открытием редактора отметок.
/// </summary>
/// <param name="versionId">ИД версии документа.</param>
/// <returns>Текст ошибки, если она есть. Иначе пустая строка.</returns>
[Remote]
public override string ValidateMarksDataBeforeOpenMarkEditor(long versionId)
{
var signature = Docflow.PublicFunctions.OfficialDocument.GetSignatureForMark(_obj, _obj.LastVersion.Id);
var isPaid = _obj.LifeCycleState == LifeCycleState.Paid;

if (signature == null && !isPaid)
return IncomingInvoices.Resources.DocumentShouldBeApprovedOrPaidToOpenMarkEditor;

if (signature != null)
{
var separator = ". ";
var validationErrors = Docflow.PublicFunctions.Module.GetSignatureValidationErrorsAsString(signature, separator);
if (!string.IsNullOrEmpty(validationErrors))
{
return Docflow.OfficialDocuments.Resources.SignatureNotValidErrorForMarkEditorFormat(validationErrors);
}
}

return string.Empty;
}

/// <summary>
/// Проверить свойства документа, необходимые для простановки отметок.
/// </summary>
/// <param name="versionId">ИД версии документа.</param>
/// <returns>Результат проверки свойств документа.</returns>
[Remote]
public override Docflow.Structures.OfficialDocument.IConversionToPdfResult ValidateMarksDataBeforeConversion(long versionId)
{
var info = Docflow.Structures.OfficialDocument.ConversionToPdfResult.Create();
var signature = Docflow.PublicFunctions.OfficialDocument.GetSignatureForMark(_obj, versionId);
var isPaid = _obj.LifeCycleState == LifeCycleState.Paid;

// Логика только для нового режима преобразования (утверждающая подпись не обязательна, если можно проставить другие отметки).
if (signature == null && !isPaid)
{
info.HasErrors = true;
info.ErrorTitle = IncomingInvoices.Resources.DocumentShouldBeApprovedOrPaidTitle;
info.ErrorMessage = IncomingInvoices.Resources.DocumentShouldBeApprovedOrPaid;
return info;
}

// Валидация подписи.
if (signature != null)
{
var separator = ". ";
var validationErrors = Docflow.PublicFunctions.Module.GetSignatureValidationErrorsAsString(signature, separator);
if (!string.IsNullOrEmpty(validationErrors))
{
info.HasErrors = true;
info.ErrorTitle = Docflow.OfficialDocuments.Resources.SignatureNotValidErrorTitle;
info.ErrorMessage = Docflow.OfficialDocuments.Resources.SignatureNotValidErrorFormat(validationErrors);
return info;
}
}

return info;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ namespace Sungero.Examples.Shared
{
partial class ContractFunctions
{

public override bool AllowedToAddMarksManually()
{
return false;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ namespace Sungero.Examples.Shared
{
partial class ContractualDocumentFunctions
{

public override bool AllowedToAddMarksManually()
{
return false;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,15 @@
"PublicFunctions": [
{
"Name": "UpdateInvoicePaymentMark",
"IsRemote": true,
"Parameters": [
{
"Name": "incomingInvoice",
"ParameterType": "global::Sungero.Examples.IIncomingInvoice",
"ParameterTypeFullName": "Sungero.Examples.IIncomingInvoice, Sungero.Domain.Interfaces"
}
],
"Placement": "Shared",
"ReturnType": "void",
"ReturnTypeFullName": "System.Void"
}
Expand All @@ -112,7 +114,10 @@
"HtmlStampTemplateForCertificateCustom",
"HtmlStampTemplateForSignatureCustom",
"HtmlMarkTemplatePayment",
"PaymentMarkName"
"PaymentMarkName",
"DocumentShouldBeApprovedOrPaidToOpenMarkEditor",
"DocumentShouldBeApprovedOrPaidTitle",
"DocumentShouldBeApprovedOrPaid"
],
"RibbonCardMetadata": {
"NameGuid": "da8e4adc-afdc-4ef8-96f8-d1989b34c51c",
Expand Down
Loading