Вопрос

Мне нужно сгенерировать счета-фактуры большими партиями, которые будут преобразованы в EDI и доставлены в нашу штаб-квартиру.Существует таблица заказов со всеми поступающими заказами.В какой-то момент дня я должен взять набор (около 1 тыс.) и сгенерировать счета-фактуры.

  1. Где было бы лучше всего сгенерировать номера счетов-фактур?На серверной части SQL Server?Или загрузить пакет в .NET-приложение, а затем сгенерировать там номера счетов-фактур?Номера счетов-фактур могут быть случайными, но не должны повторяться (в течение 3-4 лет).У меня есть максимум 12 цифр для игры, и они могут быть буквенно-цифровыми.Где я могу найти информацию о создании номеров счетов-фактур.

Примечание:Пока я генерирую счета-фактуры, мне нужно вычислить общую сумму заказа и налог.

Я был бы признателен за ваш вклад.

Это было полезно?

Решение

Номера счетов-фактур могут регулироваться правовыми требованиями (где я живу, они должны быть в последовательности, и я не думаю, что в последовательности могут быть пробелы).

Часто вы видите, что числа содержат элемент, который будет охватывать их во времени (например, год: 2009 03472). Таким образом вы минимизируете риск использования одного и того же номера дважды.

Вы говорите, что у вас есть ~ 1K счетов в день. Это означает, что 6-значный номер счета будет покрывать ваши потребности. Таким образом, 4-значный год, за которым следует шестизначный номер счета-фактуры с добавлением нуля, вероятно, должен помочь вам.

Я бы, вероятно, попросил базу данных сгенерировать их, чтобы они были уникальными.

Другие советы

Добавьте в свою базу данных таблицу, в которой хранится значение последнего использованного номера счета-фактуры, а также хранимую процедуру для увеличения этого значения и возврата нового значения, которое вы будете использовать при создании счета-фактуры.

Когда вы сохраняете свой новый счет-фактуру, позвоните в SP, чтобы получить следующий номер счета-фактуры. Это одно из последних действий, которое вы сделали - после проверки правильности, но сразу перед записью на диск - чтобы попытаться минимизировать риск " ; отверстие & Quot; в вашей последовательности нумерации.

Использование последовательных идентификаторов, вероятно, лучше всего, если вы по какой-то причине не хотите, чтобы они были случайными (например, потому, что клиенты не должны иметь возможности угадать идентификатор заказа другого заказа примерно за тот же период времени).Использование последовательных идентификаторов позволяет вам прочитать текущее максимальное значение, а затем проверить, что ни одно из них не было записано в диапазоне, который вы собираетесь записать, непосредственно перед фиксацией заказов из вашего пакетного процесса.

Если вы не хотите обременять себя проверкой базы данных и можете быть уверены, что другие процессы не будут вмешиваться, вы могли бы использовать DateTime.UtcNow и преобразование в Base64.Действительно неуклюжая иллюстрация может быть чем-то вроде:

Convert.ToBase64String(new byte[] { (byte)DateTime.UtcNow.Year, 
                                    (byte)DateTime.UtcNow.Month,
                                    (byte)DateTime.UtcNow.Day,
                                    (byte)DateTime.UtcNow.Hour,
                                    (byte)DateTime.UtcNow.Minute,
                                    (byte)DateTime.UtcNow.Second,
                                    (byte)DateTime.UtcNow.Millisecond })

Или

Convert.ToBase64String(new byte[] { (byte)DateTime.UtcNow.Ticks })

Вас, вероятно, больше заинтересует База 32 преобразование (в нем используются буквы A-Z и цифры 2-7), хотя собственного преобразования .Net нет, так что вам придется искать его.

Я думаю, что если не существует законов, ограничивающих правила создания идентификатора счета-фактуры, это может быть то, что вы хотите.

Теперь у меня есть хороший пример:

На самом деле я программирую систему счетов-фактур, и мне пришлось последовательно генерировать свой идентификационный код, и у меня возникли некоторые пробелы, потому что, когда клиент, например, расторг контракт с компанией, я уже однажды генерировал 12 счетов-фактур.

(потому что здесь мы являемся компанией-провайдером, и контракт должен составлять 6, 12 или 24 месяца)

Я получил пробел в своей базе данных, потому что пользователи системы удалили отмененные счета. Если мне действительно нужен порядковый номер, у меня проблема с законом. И у меня есть много других ситуаций, которые дали мне пробел в моем последовательном номере счета.

Я действительно не знаю, как избежать такого рода проблем, потому что есть множество ситуаций, когда это происходит. Любая идея?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top