C# 从总额中拆分发票

C# 从总额中拆分发票,c#,algorithm,C#,Algorithm,我有一张发票,我把它转换成数据集,它看起来像这样: 我想把它分成不同的发票(这样我就可以有发票,它们的总数是原始发票的总和),使用数量的总和 我试图编写的程序如下所示: 发票总数量用于计算剩余数量 如果总数量达到0,则作业完成。如果发票总额大于5000.00,则应创建新发票,生成的发票应具有可能的最大产品 结果应该是这样的: 发票001: [“Product01”,27.00,5] [“Product02”,40.00,5] 发票002: [“Product01”,27.00,5] [“P

我有一张发票,我把它转换成数据集,它看起来像这样:

我想把它分成不同的发票(这样我就可以有发票,它们的总数是原始发票的总和),使用数量的总和

我试图编写的程序如下所示:

  • 发票总数量用于计算剩余数量
  • 如果总数量达到0,则作业完成。如果发票总额大于5000.00,则应创建新发票,生成的发票应具有可能的最大产品
结果应该是这样的:
发票001:
[“Product01”,27.00,5]
[“Product02”,40.00,5]

发票002:
[“Product01”,27.00,5]
[“Product02”,40.00,5]

代码是:

class Facture
{
    public int Fact_id  {get;set;}
    public float Total {get;set;}
    public List<Facture_line> Fac_line = new List<Facture_line>();
}
class Facture_line
{
    public String desc {get;set;}
    public float prix_unitaire { get; set; }
    public int quantite { get; set; }

}
类制作
{
public int Fact_id{get;set;}
公共浮点总数{get;set;}
公共列表Fac_line=新列表();
}
类断裂线
{
公共字符串desc{get;set;}
公共浮动大奖赛{get;set;}
公共整数量化{get;set;}
}
我还有发票清单
Facture

对于演示,我将限制从5000.00更改为500.00,但这并不重要,流程应如下所示:

1)
发票组织=[“产品001”,27,10][“产品002”,40,10](总数:670)
发票[0]=[“产品001”,27,0][“产品002”,40,0](总计:0)

2)
发票组织=[“产品001”,27,9][“产品002”,40,9](总计:603)
发票[0]=[“产品001”,27,1][“产品002”,40,1](总计:67)

3)
与流程2相同)
发票组织=[“产品001”,27,8][“产品002”,40,8](总计:603)
发票[0]=“Product001”,27,2][“Product002”,40,2](总计:134)

直到发票总额[0]。总额>=500.00f


然后创建另一张发票[“1”]并以相同的方式填写。

我使用Excel Solver加载项解决了这个问题

它可以帮助解决90%的问题,另外10%是为您的问题配置它


我直到现在才知道它的存在,所以是的,我浪费了一个月的时间对Excel中已经存在的函数进行C#编码。

对不起,但是你的问题很让人困惑。你究竟是如何从
[“Product001”,27,10][“Product002”,40,10]
中总共得到670个?你试图解决这个问题的方法是什么?此外,如果您在代码中使用英文名称也会有所帮助。您所说的“生成的发票应具有可能的最大产品”是什么意思?在本例中,每个产品的最大数量应为7项(而不是如您所示的5项)。假设我们有一张发票,我想将其拆分,我有4种不同数量的产品,当我拆分原始发票时,如果可能的话,我希望在生成的发票中总共有4个产品,但是这些数量的总和必须与原始发票的数量相同一些类似的东西[link]()我如何应用其他人的修复程序?