FSXARTRAN был удален, и мне это нужно при создании счета -фактуры с назначенияC#

Место общения программистов C#
Ответить
Anonymous
 FSXARTRAN был удален, и мне это нужно при создании счета -фактуры с назначения

Сообщение 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>
Есть предложения относительно того, куда я иду отсюда?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ppointment
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»