开票金额计算公式

开票金额计算公式:

  • 毛利润:GP
  • 毛利润率:GPM
  • 营业收入(接单价):Rev
  • 营业成本(物料成本,不计其他人力等成本):COGS
  • 开票金额:INV

开票金额 = ( 毛利润率 − 5 % ) × 接单价 = ( 毛利润 接单价 − 5 % ) × 接单价 = ( 接单价 − 物料成本 接单价 − 5 % ) × 接单价 开票金额 = (毛利润率 - 5\%) ×接单价= (\frac{毛利润}{接单价} - 5\%) ×接单价= (\frac{接单价 - 物料成本}{接单价} - 5\%) ×接单价 开票金额=(毛利润率5%)×接单价=(接单价毛利润5%)×接单价=(接单价接单价物料成本5%)×接单价

  • 抽象公式:
    I N V = ( G P M − 5 % ) × R e v = ( G P R e v − 5 % ) × R e v = ( R e v − C O G S R e v − 5 % ) × R e v INV = (GPM - 5\%) ×Rev= (\frac{GP}{Rev} - 5\%) ×Rev= (\frac{Rev - COGS}{Rev} - 5\%) ×Rev INV=(GPM5%)×Rev=(RevGP5%)×Rev=(RevRevCOGS5%)×Rev

  • 进一步化简:
    ( R e v − C O G S R e v × R e v − 5 % × R e v ) = R e v − C O G S − R e v × 5 % = R e v × 95 % − C O G S (\frac{Rev - COGS}{Rev} ×Rev - 5\% ×Rev) = Rev - COGS - Rev × 5\% = Rev × 95\% - COGS (RevRevCOGS×Rev5%×Rev)=RevCOGSRev×5%=Rev×95%COGS

  • 结论:
    开票金额 = 接单价 × 95 % − 物料成本 开票金额 = 接单价 × 95\% - 物料成本 开票金额=接单价×95%物料成本

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
类似于上面的答案,我们可以遍历原始的List对象,然后根据最大开票金额对发票对象进行合并或拆分。如果累加金额超过最大开票金额,则根据每个发票对象的金额进行拆分,以确保同一ID的发票对象开票金额合计小于等于最大开票金额。下面是一个示例代码: ```java public List<Invoice> splitInvoiceList(List<Invoice> invoiceList, int maxAmount) { List<Invoice> result = new ArrayList<>(); int sum = 0; List<Invoice> temp = new ArrayList<>(); int id = 1; for (Invoice invoice : invoiceList) { if (sum + invoice.getAmount() <= maxAmount) { sum += invoice.getAmount(); invoice.setId(id); temp.add(invoice); } else { int remaining = invoice.getAmount(); while (remaining > 0) { int splitAmount = Math.min(remaining, maxAmount - sum); Invoice splitInvoice = new Invoice(); splitInvoice.setId(id); splitInvoice.setAmount(splitAmount); temp.add(splitInvoice); result.add(splitInvoice); remaining -= splitAmount; sum = 0; id++; } if (remaining > 0) { invoice.setId(id); temp.add(invoice); sum = remaining; } } } if (temp.size() > 0) { result.addAll(temp); } return result; } ``` 在这个示例中,我们首先遍历了原始的List对象,并根据金额属性进行累加。如果累加金额小于等于最大开票金额,则将当前发票对象添加到temp列表中,并将sum累加上该发票对象的金额。同时,我们为每个发票对象设置一个ID属性,以便后续处理。如果累加金额超过最大开票金额,则根据每个发票对象的金额进行拆分,以确保同一ID的发票对象开票金额合计小于等于最大开票金额。具体来说,我们使用while循环不断将剩余金额拆分成新的发票对象,直到剩余金额为0为止。在拆分过程中,我们为每个新的发票对象设置一个新的ID属性,并将其添加到temp和result列表中。最后,我们返回result列表,其中包含了拆分后的多个发票对象列表。 请注意,这只是一个简单的示例代码,您可能需要根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MechMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值