Здравствуйте, коллеги!
Создал по аналогии с 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 и объединю его с существующей «нашей компанией», проблема решится?