Здравствуйте, коллеги!
Создал по аналогии с CreateInvoiceFromOrder создание счета из договора - CreateInvoiceFromContract
Все работает отлично, за исключением одного момента
В новом счете не заполняется поле Supplier (подразумевается, что это наша компания), всегда пустое после открытия карточки.
Ранее обнаружил, что и CreateInvoiceFromOrder не работал, ибо что то там foreign key в таблице Account, оказалось, что в в объекте Invoice по умолчанию стояло заполнять это поле каким то левым гуидом e308b781-3c5b-4ecb-89ef-5c1ed4da488e. Я это дело исправил в одном из своих пакетов, но видно все равно это как то сказывается.
Прошу помощи.
Нравится
Борис Леонов,
namespace Terrasoft.Configuration
{
public static class AccountConsts
{
public static readonly Guid OurCompanyAccountId = new Guid("E308B781-3C5B-4ECB-89EF-5C1ED4DA488E");
}
}
OurCompanyAccountId это Id Нашей компании, рекомендуется при начале внедрения эту запись переименовать в название вашей компании, возможно вы ее удалили изза этого и могли возникнуть проблемы в работе с созданием счета
Добрый день!
В БП CreateInvoiceFromOrder есть метод
public virtual void CreateInvoice() {
OrderInvoiceHelper helper = Factories.ClassFactory.Get<OrderInvoiceHelper>(new Factories.ConstructorArgument("userConnection", UserConnection));
CreatedInvoiceId = helper.CreateEntity("Order", "Invoice", CurrentOrder, new Dictionary<string, string> {
{"Currency", "Currency"},
{"CurrencyRate", "CurrencyRate"},
{"Contact", "Contact"},
{"Account", "Account"},
{"Owner", "Owner"},
{"Amount", "Amount"},
{"Opportunity", "Opportunity"}
}, new Dictionary<string, object> { { "Order", CurrentOrder } });
}который создает Invoice по Order. 3им параметром идет словарь-маппинг полей Invoice по Order, 4ым параметром (new Dictionary<string, object> { { "Order", CurrentOrder } }) предустановленные параметры. Вот ваш Supplier надо добавить туда
Григорий Чех пишет:
В чем вы просите помощи?
Победить глюк с незаполнением Supplier в новом счете.
Сидоров Александр В.,
Александр, мой вариант сейчас выглядит так:
public virtual void CreateInvoice() {
OrderInvoiceHelper helper = Factories.ClassFactory.Get<OrderInvoiceHelper>(new Factories.ConstructorArgument("userConnection", UserConnection));
var createdInvoiceId = helper.CreateEntity(
"Contract", "Invoice", Get<Guid>("CurrentContract"), new Dictionary<string, string> {
{"Currency", "Currency"},
{"CurrencyRate", "CurrencyRate"},
{"Contact", "Contact"},
{"Account", "Account"},
{"CustomerBillingInfo","CustomerBillingInfo"},
{"OurCompany", "Supplier"},
{"SupplierBillingInfo", "SupplierBillingInfo"},
{"Owner", "Owner"},
{"Amount", "Amount"},
{"Order","Order"},
{"Opportunity", "Opportunity"}
},
new Dictionary<string, object> {
{"Contract", Get<Guid>("CurrentContract")},
{"ZLPaymentType", Get<Guid>("PaymentType")}
});
Set("CreatedInvoiceId", createdInvoiceId);
}
Про левый Guid в значении по умолчанию для Supplier в Invoice имею в виду это:

я переопределил это безобразие на "не устанавливать значение по умолчанию" в своем пакете, CreateInvoiceFromOrder заработал, но лишь потому, что в Заказе нет полей с нашей компанией (поставщиком), нечем в счете заполнять.
откуда лезет этот e308b781-3c5b-4ecb-89ef-5c1ed4da488e, причем у объектов в залоченных фирменных террасофтовских пакетах?
Борис Леонов,
namespace Terrasoft.Configuration
{
public static class AccountConsts
{
public static readonly Guid OurCompanyAccountId = new Guid("E308B781-3C5B-4ECB-89EF-5C1ED4DA488E");
}
}
OurCompanyAccountId это Id Нашей компании, рекомендуется при начале внедрения эту запись переименовать в название вашей компании, возможно вы ее удалили изза этого и могли возникнуть проблемы в работе с созданием счета
Борис Леонов,
{"OurCompany", "Supplier"}, - это значит значение из поля OurCompany объекта Contract скопировать в поле Supplier объекта Invoice.
Если вам надо именно одно и то же значение всегда записывать, то вам надо добавить параметр в словарь
new Dictionary<string, object> {
{"Contract", Get<Guid>("CurrentContract")},
{"ZLPaymentType", Get<Guid>("PaymentType")}
}Да, ни в коем случае не удаляйте эту "Нашу компанию". Она ещё в некоторых местах жёстко зашита. Например, в интеграции с AD
Григорий Чех,
Владимир Соколов,
удалили, вероятней всего когда когда клиент объединял несколько «нечаянно» созданных компаний.
Если я руками создам Account с нужным Id и объединю его с существующей «нашей компанией», проблема решится?