C#:根据设定的周期增加发票编号
C#: Increment invoice number based on set cycles
我正在创建递增的发票编号,如下所示:AABBBB1122。
'A' 和 'B' 绑定到我的代码中的标识符。
但是我需要的数字分别是月和年。
例如:0821(2021 年 8 月)。
我不想以任何方式将它连接到日历。
如果可能的话,我想定义一个开始日期,并从那里增加。
即:0821 必须增加到 0921, 1021, 1121 , 1221 -
在年份也增加之前; 0122.
我该怎么做?
到目前为止我得到了什么:
string AA {
get { return this.IdentifierA.Substring(0, 2);
set { SetAndNotify(ref this.AA, value); }
}
string BB {
get { return this.IdentifierB.Substring(0, 4);
set { SetAndNotify(ref this.BB, value); }
}
string InvoiceNumber {
get { return String.Concat(AA + BB + /* what goes here? */).ToUpper(); }
set { SetAndNotify(ref this.InvoiceNumber, value);
听起来像是处理发票编号的一种特殊方式。你是说你不想要它基于当前日期 , 但 只是增加 在 MMYY 风格?
给定一个典型的自动递增 int KEY,每张发票增加 1,请使用:
((KEY % 12).ToString("00")+(KEY/12).ToString("00"))
从12*21+8开始KEY以0821.
开始
.. 但根据发票要求,我认为您肯定要求的是:
(DateTime.Now.Month.ToString("00")+DateTime.Now.Year.ToString("00"))
这将是:
return string.Format("{0}{1}{2}", AA, BB, DateTime.Now.ToString("MMyy")).ToUpper();
或在新的串联中
return $"{AA}{BB}{DateTime.Now.ToString("MMyy")}".ToUpper();
如果我没理解错你的问题,objective 是从字符串中解析日期并生成下一个 ID。然后您可以使用以下逻辑。
string id = "AAAA1221";
// Extract data.
int i = Convert.ToInt32(id.Substring(id.Length - 4, 4));
int year = i % 100;
int month = i / 100;
// Perform increment logic.
if (month == 12)
{
year++;
month = 1;
}
else
{
month++;
}
// Reformat key
string newId = $"{id.Substring(0, id.Length - 4)}{month:D2}{year:D2}";
如果您不想使用之前的 ID,您可以在 'i' 变量中使用之前的值开始相同的逻辑。
我正在创建递增的发票编号,如下所示:AABBBB1122。
'A' 和 'B' 绑定到我的代码中的标识符。 但是我需要的数字分别是月和年。 例如:0821(2021 年 8 月)。 我不想以任何方式将它连接到日历。 如果可能的话,我想定义一个开始日期,并从那里增加。
即:0821 必须增加到 0921, 1021, 1121 , 1221 - 在年份也增加之前; 0122.
我该怎么做?
到目前为止我得到了什么:
string AA {
get { return this.IdentifierA.Substring(0, 2);
set { SetAndNotify(ref this.AA, value); }
}
string BB {
get { return this.IdentifierB.Substring(0, 4);
set { SetAndNotify(ref this.BB, value); }
}
string InvoiceNumber {
get { return String.Concat(AA + BB + /* what goes here? */).ToUpper(); }
set { SetAndNotify(ref this.InvoiceNumber, value);
听起来像是处理发票编号的一种特殊方式。你是说你不想要它基于当前日期 , 但 只是增加 在 MMYY 风格?
给定一个典型的自动递增 int KEY,每张发票增加 1,请使用:
((KEY % 12).ToString("00")+(KEY/12).ToString("00"))
从12*21+8开始KEY以0821.
开始.. 但根据发票要求,我认为您肯定要求的是:
(DateTime.Now.Month.ToString("00")+DateTime.Now.Year.ToString("00"))
这将是:
return string.Format("{0}{1}{2}", AA, BB, DateTime.Now.ToString("MMyy")).ToUpper();
或在新的串联中
return $"{AA}{BB}{DateTime.Now.ToString("MMyy")}".ToUpper();
如果我没理解错你的问题,objective 是从字符串中解析日期并生成下一个 ID。然后您可以使用以下逻辑。
string id = "AAAA1221";
// Extract data.
int i = Convert.ToInt32(id.Substring(id.Length - 4, 4));
int year = i % 100;
int month = i / 100;
// Perform increment logic.
if (month == 12)
{
year++;
month = 1;
}
else
{
month++;
}
// Reformat key
string newId = $"{id.Substring(0, id.Length - 4)}{month:D2}{year:D2}";
如果您不想使用之前的 ID,您可以在 'i' 变量中使用之前的值开始相同的逻辑。