Мне нужно выполнить настройку на экране ведения производственного заказа, где на вкладке сведений о строке есть кнопка «Создать», чтобы создать строку в последовательности 000001 и т. д.
Но я хотите изменить его, чтобы получить производственный номер, например (PP000004), а сгенерированный номер партии/серийный номер: PP000004-000001, PP000004-000002, PP000004-000003 и так далее, пока не будет достигнуто необходимое количество. Как добиться этого с помощью настройки? Чтобы изменить номер партии/серийный номер, необходимо расширить кнопку создания. Я создал метод переопределения, но получаю эту ошибку, буду благодарен за любую помощь!
using System;
using PX.Data;
using PX.Objects.IN;
using PX.Objects.CS;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using PX.Objects.AM.GraphExtensions;
using PX.Common;
using PX.Objects.Common;
using PX.Objects.SO;
using PX.Objects.AM.Attributes;
using System.Linq;
using PX.Objects.AM.CacheExtensions;
using PX.Data.BQL.Fluent;
using PX.Data.BQL;
using PX.Objects.AR;
using PX.Objects.CR;
using PX.Objects.GL;
using PX.Objects;
using PX.Objects.AM;
namespace PX.Objects.AM
{
public class ProdMaint_Extension : PXGraphExtension
{
#region Event Handlers
// This method overrides the existing method tied to the Generate button
[PXOverride]
public virtual void GenerateNumbers(Action baseMethod)
{
// Call the base method to keep existing functionality (optional)
baseMethod?.Invoke();
// Custom logic to generate Lot/Serial numbers based on production number
var currentOrder = PXSelect.Select(Base).TopFirst;
if (currentOrder == null) return;
string productionNumber = currentOrder.ProdOrdID;
// Get all generated material lines
PXResultset materialLines = PXSelect
.Select(Base, currentOrder.ProdOrdID);
int sequenceNumber = 1;
foreach (AMProdMatl line in materialLines)
{
if (string.IsNullOrEmpty(line.LotSerialNbr)) continue;
// Generate the new lot/serial number
string newLotSerialNbr = $"{productionNumber}-{sequenceNumber:D6}";
// Update the lot/serial number
line.LotSerialNbr = newLotSerialNbr;
// Save changes
Base.Caches[typeof(AMProdMatl)].Update(line);
sequenceNumber++;
}
// Save changes to the database
Base.Actions.PressSave();
}
#endregion
}
Ошибка: [2024-10-07 03:16:01.919] The Void GenerateNumbers(System.Action) метод в расширении графа PX.Objects.AM.ProdMaint_Extension помечен как [PXOverride], но в PXGraph не найден исходный метод с таким именем.
[2024-10-07 03:16:08.479] Проверка не удалась .
Спасибо!
Новый код
{
public class ProdMaint_Extension : PXGraphExtension
{
#region Event Handlers
//public IEnumerable GenerateNumbersDelegate(PXAdapter adapter);
//public delegate IEnumerable GenerateNumbersDelegate(PXAdapter adapter);
[PXOverride]
public IEnumerable GenerateNumbers(PXAdapter adapter, Func baseMethod)
{
//var result = baseMethod(adapter);
//return result;
// Call the base method to ensure the original functionality is executed
var baseResult = baseMethod.Invoke(adapter);
// Retrieve the current production order
var currentProductionOrder = PXSelect.Select(Base).TopFirst;
if (currentProductionOrder == null)
{
throw new PXException("No Production Order found.");
}
// Get the production order number
var productionOrderNbr = currentProductionOrder.ProdOrdID; // Adjust this field as needed
if (string.IsNullOrEmpty(productionOrderNbr))
{
throw new PXException("Production Order Number is required.");
}
// Prepare a list to store the updated rows
var resultList = new List();
int sequenceNumber = 1;
// Iterate over the results returned by the base method
foreach (AMProdMatl row in baseResult.OfType())
{
// Generate the custom Lot/Serial number
row.LotSerialNbr = $"{productionOrderNbr}-{sequenceNumber:D6}";
// Add the updated row to the result list
resultList.Add(row);
sequenceNumber++;
}
// Return the updated result list
return resultList;
}
#endregion
}
}```
Подробнее здесь: https://stackoverflow.com/questions/790 ... ntenance-s
Изменение создания номера партии/серийного номера на экране ведения производственного заказа Acumatica (AM201500) ⇐ C#
Место общения программистов C#
1728604157
Anonymous
Мне нужно выполнить настройку на экране ведения производственного заказа, где на вкладке сведений о строке есть кнопка «Создать», чтобы создать строку в последовательности 000001 и т. д.
Но я хотите изменить его, чтобы получить производственный номер, например (PP000004), а сгенерированный номер партии/серийный номер: PP000004-000001, PP000004-000002, PP000004-000003 и так далее, пока не будет достигнуто необходимое количество. Как добиться этого с помощью настройки? Чтобы изменить номер партии/серийный номер, необходимо расширить кнопку создания. Я создал метод переопределения, но получаю эту ошибку, буду благодарен за любую помощь!
using System;
using PX.Data;
using PX.Objects.IN;
using PX.Objects.CS;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using PX.Objects.AM.GraphExtensions;
using PX.Common;
using PX.Objects.Common;
using PX.Objects.SO;
using PX.Objects.AM.Attributes;
using System.Linq;
using PX.Objects.AM.CacheExtensions;
using PX.Data.BQL.Fluent;
using PX.Data.BQL;
using PX.Objects.AR;
using PX.Objects.CR;
using PX.Objects.GL;
using PX.Objects;
using PX.Objects.AM;
namespace PX.Objects.AM
{
public class ProdMaint_Extension : PXGraphExtension
{
#region Event Handlers
// This method overrides the existing method tied to the Generate button
[PXOverride]
public virtual void GenerateNumbers(Action baseMethod)
{
// Call the base method to keep existing functionality (optional)
baseMethod?.Invoke();
// Custom logic to generate Lot/Serial numbers based on production number
var currentOrder = PXSelect.Select(Base).TopFirst;
if (currentOrder == null) return;
string productionNumber = currentOrder.ProdOrdID;
// Get all generated material lines
PXResultset materialLines = PXSelect
.Select(Base, currentOrder.ProdOrdID);
int sequenceNumber = 1;
foreach (AMProdMatl line in materialLines)
{
if (string.IsNullOrEmpty(line.LotSerialNbr)) continue;
// Generate the new lot/serial number
string newLotSerialNbr = $"{productionNumber}-{sequenceNumber:D6}";
// Update the lot/serial number
line.LotSerialNbr = newLotSerialNbr;
// Save changes
Base.Caches[typeof(AMProdMatl)].Update(line);
sequenceNumber++;
}
// Save changes to the database
Base.Actions.PressSave();
}
#endregion
}
Ошибка: [2024-10-07 03:16:01.919] The Void GenerateNumbers(System.Action) метод в расширении графа PX.Objects.AM.ProdMaint_Extension помечен как [PXOverride], но в PXGraph не найден исходный метод с таким именем.
[2024-10-07 03:16:08.479] Проверка не удалась .
Спасибо!
Новый код
{
public class ProdMaint_Extension : PXGraphExtension
{
#region Event Handlers
//public IEnumerable GenerateNumbersDelegate(PXAdapter adapter);
//public delegate IEnumerable GenerateNumbersDelegate(PXAdapter adapter);
[PXOverride]
public IEnumerable GenerateNumbers(PXAdapter adapter, Func baseMethod)
{
//var result = baseMethod(adapter);
//return result;
// Call the base method to ensure the original functionality is executed
var baseResult = baseMethod.Invoke(adapter);
// Retrieve the current production order
var currentProductionOrder = PXSelect.Select(Base).TopFirst;
if (currentProductionOrder == null)
{
throw new PXException("No Production Order found.");
}
// Get the production order number
var productionOrderNbr = currentProductionOrder.ProdOrdID; // Adjust this field as needed
if (string.IsNullOrEmpty(productionOrderNbr))
{
throw new PXException("Production Order Number is required.");
}
// Prepare a list to store the updated rows
var resultList = new List();
int sequenceNumber = 1;
// Iterate over the results returned by the base method
foreach (AMProdMatl row in baseResult.OfType())
{
// Generate the custom Lot/Serial number
row.LotSerialNbr = $"{productionOrderNbr}-{sequenceNumber:D6}";
// Add the updated row to the result list
resultList.Add(row);
sequenceNumber++;
}
// Return the updated result list
return resultList;
}
#endregion
}
}```
Подробнее здесь: [url]https://stackoverflow.com/questions/79060492/modify-lot-serial-number-generation-in-acumatica-production-order-maintenance-s[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия