Пара пересмотров назад, Acumatica установила и удалила проекцию fsxartran.
В случае использования у нас есть пользовательское поле, называемое Usrasgprintcheck, которое является поле, которое мы добавили в элементы инвентаризации, элементы линии обслуживания, элементы линии встречи и элементы линии Artran.
Идея состоит в том, что клиент может указать на уровне инвентаря, если он должен быть напечатан на счете. Он может быть переопределен на уровне заказов на обслуживание, а снова на уровне встречи. < /P>
У меня есть эта рабочая часть. Твой отправляйся, чтобы распечатать счет -фактуру. а затем запускает график ArinVoiceEntry. Я не могу сделать это в мероприятии, потому что, когда он отправляется в Arinvoiceentry, он имеет в рефнбр. Мне нужно искать связанную встречу, но я не вижу, чтобы нигде в кэше графа arinvoiceentry. Получите информацию о заказе FSService, которая связана с FSARTRAN, но это исчезло. Мой флаг перед тем, как он подведет график arinvoiceentry к пользователю? >
public PXAction invoiceAppointment;
[PXButton]
[PXUIField(DisplayName = "Run Billing", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]
public IEnumerable InvoiceAppointment(PXAdapter adapter)
{
List list = adapter.Get().ToList();
List rows = new List();
if (!adapter.MassProcess)
{
SaveWithRecalculateExternalTaxesSync();
}
if (ServiceOrderTypeSelected.Current != null && ServiceOrderRelated.Current != null
&& ServiceOrderTypeSelected.Current.PostTo == ID.Batch_PostTo.SO)
{
ValidateContact(ServiceOrderRelated.Current);
}
foreach (FSAppointment fsAppointmentRow in list)
{
// Acuminator disable once PX1008 LongOperationDelegateSynchronousExecution [compatibility with legacy code]
PXLongOperation.StartOperation(
this,
delegate ()
{
SetServiceOrderStatusFromAppointment(ServiceOrderRelated.Current, fsAppointmentRow, ActionButton.InvoiceAppointment);
CreateInvoiceByAppointmentPost graphCreateInvoiceByAppointmentPost = PXGraph.CreateInstance();
graphCreateInvoiceByAppointmentPost.Filter.Current.PostTo = ServiceOrderTypeSelected.Current.PostTo == ID.SrvOrdType_PostTo.ACCOUNTS_RECEIVABLE_MODULE ? ID.Batch_PostTo.AR_AP : ServiceOrderTypeSelected.Current.PostTo;
graphCreateInvoiceByAppointmentPost.Filter.Current.IgnoreBillingCycles = true;
graphCreateInvoiceByAppointmentPost.Filter.Current.BranchID = fsAppointmentRow.BranchID;
graphCreateInvoiceByAppointmentPost.Filter.Current.LoadData = true;
if (fsAppointmentRow.ActualDateTimeEnd > Accessinfo.BusinessDate)
{
graphCreateInvoiceByAppointmentPost.Filter.Current.UpToDate = fsAppointmentRow.ActualDateTimeEnd;
graphCreateInvoiceByAppointmentPost.Filter.Current.InvoiceDate = fsAppointmentRow.ActualDateTimeEnd;
}
graphCreateInvoiceByAppointmentPost.Filter.Insert(graphCreateInvoiceByAppointmentPost.Filter.Current);
AppointmentToPost appointmentToPostRow = graphCreateInvoiceByAppointmentPost.PostLines.Current =
graphCreateInvoiceByAppointmentPost.PostLines.Search(fsAppointmentRow.RefNbr, fsAppointmentRow.SrvOrdType);
if (appointmentToPostRow == null)
{
throw new PXSetPropertyException(TX.Error.DocumentCannotBeInvoiced, fsAppointmentRow.SrvOrdType, fsAppointmentRow.RefNbr);
}
rows = new List
{
appointmentToPostRow
};
Guid currentProcessID = graphCreateInvoiceByAppointmentPost.CreateInvoices(graphCreateInvoiceByAppointmentPost, rows, graphCreateInvoiceByAppointmentPost.Filter.Current, adapter.QuickProcessFlow, false);
if (graphCreateInvoiceByAppointmentPost.Filter.Current.PostTo == ID.SrvOrdType_PostTo.SALES_ORDER_MODULE
|| graphCreateInvoiceByAppointmentPost.Filter.Current.PostTo == ID.SrvOrdType_PostTo.SALES_ORDER_INVOICE)
{
foreach (PXResult result in SharedFunctions.GetPostBachByProcessID(this, currentProcessID))
{
FSPostBatch fSPostBatchRow = (FSPostBatch)result;
graphCreateInvoiceByAppointmentPost.ApplyPrepayments(fSPostBatchRow);
}
}
AppointmentEntry apptGraph = PXGraph.CreateInstance();
apptGraph.AppointmentRecords.Current =
apptGraph.AppointmentRecords.Search
(fsAppointmentRow.RefNbr, fsAppointmentRow.SrvOrdType);
if (!adapter.MassProcess || this.IsMobile == true)
{
using (new PXTimeStampScope(null))
{
apptGraph.AppointmentPostedIn.Current = apptGraph.AppointmentPostedIn.SelectWindowed(0, 1);
apptGraph.openPostingDocument();
}
}
});
}
return list;
}
< /code>
Кто -то предложил переопределить метод, подобный этому: < /p>
public PXAction invoiceAppointment;
[PXButton]
[PXUIField(DisplayName = "Run Billing", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]
public IEnumerable InvoiceAppointment(PXAdapter adapter)
{
PXGraph.InstanceCreated.AddHandler((g) =>
{
g.RowPersisting.AddHandler((cache, e) =>
{
var invoiceGraph = cache.Graph as ARInvoiceEntry;
var transactions = invoiceGraph.Transactions.Select()?.FirstTableItems;
ARInvoice invoice = (ARInvoice)e.Row;
foreach (ARTran tran in transactions)
{
// Can use SetValueExt just like regular event handlers
cache.SetValueExt(tran, false);
}
});
});
var result = Base.InvoiceAppointment(adapter);
}
< /code>
Но обработчик, который добавляется таким образом, никогда не выполняется, поэтому у меня нет места, чтобы разместить свой код, чтобы проверить Master Mession Order. < /p>
Есть предложения относительно того, куда я иду отсюда?
Подробнее здесь: https://stackoverflow.com/questions/793 ... ppointment
FSXARTRAN был удален, и мне это нужно при создании счета -фактуры с назначения ⇐ C#
Место общения программистов C#
1738269414
Anonymous
Пара пересмотров назад, Acumatica установила и удалила проекцию fsxartran.
В случае использования у нас есть пользовательское поле, называемое Usrasgprintcheck, которое является поле, которое мы добавили в элементы инвентаризации, элементы линии обслуживания, элементы линии встречи и элементы линии Artran.
Идея состоит в том, что клиент может указать на уровне инвентаря, если он должен быть напечатан на счете. Он может быть переопределен на уровне заказов на обслуживание, а снова на уровне встречи. < /P>
У меня есть эта рабочая часть. Твой отправляйся, чтобы распечатать счет -фактуру. а затем запускает график ArinVoiceEntry. Я не могу сделать это в мероприятии, потому что, когда он отправляется в Arinvoiceentry, он имеет в рефнбр. Мне нужно искать связанную встречу, но я не вижу, чтобы нигде в кэше графа arinvoiceentry. Получите информацию о заказе FSService, которая связана с FSARTRAN, но это исчезло. Мой флаг перед тем, как он подведет график arinvoiceentry к пользователю? >
public PXAction invoiceAppointment;
[PXButton]
[PXUIField(DisplayName = "Run Billing", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]
public IEnumerable InvoiceAppointment(PXAdapter adapter)
{
List list = adapter.Get().ToList();
List rows = new List();
if (!adapter.MassProcess)
{
SaveWithRecalculateExternalTaxesSync();
}
if (ServiceOrderTypeSelected.Current != null && ServiceOrderRelated.Current != null
&& ServiceOrderTypeSelected.Current.PostTo == ID.Batch_PostTo.SO)
{
ValidateContact(ServiceOrderRelated.Current);
}
foreach (FSAppointment fsAppointmentRow in list)
{
// Acuminator disable once PX1008 LongOperationDelegateSynchronousExecution [compatibility with legacy code]
PXLongOperation.StartOperation(
this,
delegate ()
{
SetServiceOrderStatusFromAppointment(ServiceOrderRelated.Current, fsAppointmentRow, ActionButton.InvoiceAppointment);
CreateInvoiceByAppointmentPost graphCreateInvoiceByAppointmentPost = PXGraph.CreateInstance();
graphCreateInvoiceByAppointmentPost.Filter.Current.PostTo = ServiceOrderTypeSelected.Current.PostTo == ID.SrvOrdType_PostTo.ACCOUNTS_RECEIVABLE_MODULE ? ID.Batch_PostTo.AR_AP : ServiceOrderTypeSelected.Current.PostTo;
graphCreateInvoiceByAppointmentPost.Filter.Current.IgnoreBillingCycles = true;
graphCreateInvoiceByAppointmentPost.Filter.Current.BranchID = fsAppointmentRow.BranchID;
graphCreateInvoiceByAppointmentPost.Filter.Current.LoadData = true;
if (fsAppointmentRow.ActualDateTimeEnd > Accessinfo.BusinessDate)
{
graphCreateInvoiceByAppointmentPost.Filter.Current.UpToDate = fsAppointmentRow.ActualDateTimeEnd;
graphCreateInvoiceByAppointmentPost.Filter.Current.InvoiceDate = fsAppointmentRow.ActualDateTimeEnd;
}
graphCreateInvoiceByAppointmentPost.Filter.Insert(graphCreateInvoiceByAppointmentPost.Filter.Current);
AppointmentToPost appointmentToPostRow = graphCreateInvoiceByAppointmentPost.PostLines.Current =
graphCreateInvoiceByAppointmentPost.PostLines.Search(fsAppointmentRow.RefNbr, fsAppointmentRow.SrvOrdType);
if (appointmentToPostRow == null)
{
throw new PXSetPropertyException(TX.Error.DocumentCannotBeInvoiced, fsAppointmentRow.SrvOrdType, fsAppointmentRow.RefNbr);
}
rows = new List
{
appointmentToPostRow
};
Guid currentProcessID = graphCreateInvoiceByAppointmentPost.CreateInvoices(graphCreateInvoiceByAppointmentPost, rows, graphCreateInvoiceByAppointmentPost.Filter.Current, adapter.QuickProcessFlow, false);
if (graphCreateInvoiceByAppointmentPost.Filter.Current.PostTo == ID.SrvOrdType_PostTo.SALES_ORDER_MODULE
|| graphCreateInvoiceByAppointmentPost.Filter.Current.PostTo == ID.SrvOrdType_PostTo.SALES_ORDER_INVOICE)
{
foreach (PXResult result in SharedFunctions.GetPostBachByProcessID(this, currentProcessID))
{
FSPostBatch fSPostBatchRow = (FSPostBatch)result;
graphCreateInvoiceByAppointmentPost.ApplyPrepayments(fSPostBatchRow);
}
}
AppointmentEntry apptGraph = PXGraph.CreateInstance();
apptGraph.AppointmentRecords.Current =
apptGraph.AppointmentRecords.Search
(fsAppointmentRow.RefNbr, fsAppointmentRow.SrvOrdType);
if (!adapter.MassProcess || this.IsMobile == true)
{
using (new PXTimeStampScope(null))
{
apptGraph.AppointmentPostedIn.Current = apptGraph.AppointmentPostedIn.SelectWindowed(0, 1);
apptGraph.openPostingDocument();
}
}
});
}
return list;
}
< /code>
Кто -то предложил переопределить метод, подобный этому: < /p>
public PXAction invoiceAppointment;
[PXButton]
[PXUIField(DisplayName = "Run Billing", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]
public IEnumerable InvoiceAppointment(PXAdapter adapter)
{
PXGraph.InstanceCreated.AddHandler((g) =>
{
g.RowPersisting.AddHandler((cache, e) =>
{
var invoiceGraph = cache.Graph as ARInvoiceEntry;
var transactions = invoiceGraph.Transactions.Select()?.FirstTableItems;
ARInvoice invoice = (ARInvoice)e.Row;
foreach (ARTran tran in transactions)
{
// Can use SetValueExt just like regular event handlers
cache.SetValueExt(tran, false);
}
});
});
var result = Base.InvoiceAppointment(adapter);
}
< /code>
Но обработчик, который добавляется таким образом, никогда не выполняется, поэтому у меня нет места, чтобы разместить свой код, чтобы проверить Master Mession Order. < /p>
Есть предложения относительно того, куда я иду отсюда?
Подробнее здесь: [url]https://stackoverflow.com/questions/79392236/fsxartran-has-been-removed-and-i-need-it-when-creating-invoice-from-appointment[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия