From 1b63514992bea9c813f790396315f422593b3885 Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Mon, 2 Dec 2024 15:25:06 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E9=94=80=E5=94=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E9=94=80=E5=94=AE=E4=BC=B0=E4=BB=B7?= =?UTF-8?q?=E7=9A=84=E6=80=BB=E7=BB=8F=E7=90=86=E6=B7=BB=E5=8A=A0=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E9=A1=B5=E9=9D=A2=EF=BC=8C=E6=8F=90=E4=BA=A4=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E6=96=B0=E5=A2=9E=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=80=BB?= =?UTF-8?q?=E7=BB=8F=E8=90=A5=E6=88=90=E6=9C=AC=E4=B8=8D=E8=83=BD=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E7=9A=84=E5=88=A4=E6=96=AD=E6=9D=A1=E4=BB=B6=20?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E4=B8=8D=E5=90=AB=E7=A8=8E=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=88=90=E6=9C=AC=E5=92=8C=E5=90=AB=E7=A8=8E=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=88=90=E6=9C=AC=E4=B9=98=E4=BB=A5=E7=94=A8=E9=87=8F=E7=9A=84?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E8=A7=84=E5=88=99=20=E6=8C=89=E7=85=A7?= =?UTF-8?q?=E9=94=80=E5=94=AE=E4=BC=B0=E4=BB=B7=E6=80=BB=E7=BB=8F=E7=90=86?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=89=8D=E7=AB=AF=E9=A1=B5=E9=9D=A2=EF=BC=8C?= =?UTF-8?q?=E9=87=8D=E5=86=99=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E6=80=BB=E7=BB=8F=E7=90=86=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=94=80=E5=94=AE=E4=BC=B0=E4=BB=B7=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=8C=E6=8C=89=E7=85=A7=E4=BB=A5=E4=B8=8B?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E8=A7=84=E5=88=99=E8=AE=A1=E7=AE=97=201?= =?UTF-8?q?=E3=80=81=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=96=99=E5=8F=B7=E4=BC=B0?= =?UTF-8?q?=E4=BB=B7=E6=88=90=E6=9C=AC=3D=E8=AF=A5=E6=96=99=E5=8F=B7?= =?UTF-8?q?=E7=9A=84BOM=E7=89=A9=E6=96=99=E4=B8=8D=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=80=BB=E9=87=87=E8=B4=AD=E6=88=90=E6=9C=AC+=E4=B8=8D?= =?UTF-8?q?=E5=90=AB=E7=A8=8E=E8=BF=90=E8=BE=93=E6=88=90=E6=9C=AC+?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=9C=8D=E5=8A=A1=E6=88=90=E6=9C=AC?= =?UTF-8?q?+=E4=B8=8D=E5=90=AB=E7=A8=8E=E5=BC=80=E5=8F=91=E6=88=90?= =?UTF-8?q?=E6=9C=AC+(=E8=AF=A5=E6=96=99=E5=8F=B7=E7=9A=84BOM=E7=89=A9?= =?UTF-8?q?=E6=96=99=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=80=BB=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=88=90=E6=9C=AC/=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=80=BB?= =?UTF-8?q?=E7=89=A9=E6=96=99=E6=88=90=E6=9C=AC)*=E4=B8=8A=E4=B8=80?= =?UTF-8?q?=E5=B9=B4=E5=BA=A6=E7=9A=84=E6=80=BB=E7=BB=8F=E8=90=A5=E4=B8=8D?= =?UTF-8?q?=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=201.1?= =?UTF-8?q?=E3=80=81=E8=AF=A5=E6=96=99=E5=8F=B7=E7=9A=84BOM=E7=89=A9?= =?UTF-8?q?=E6=96=99=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=80=BB=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=88=90=E6=9C=AC=3D=E6=89=8B=E5=A1=AB=E7=9A=84bom=E7=89=A9?= =?UTF-8?q?=E6=96=99=E7=9A=84=E6=80=BB=E7=9A=84=E4=B8=8D=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E4=BB=B7=E7=9A=84=E5=90=88=E8=AE=A1?= =?UTF-8?q?=202=E3=80=81=E5=90=AB=E7=A8=8E=E6=96=99=E5=8F=B7=E4=BC=B0?= =?UTF-8?q?=E4=BB=B7=E6=88=90=E6=9C=AC=3D=E8=AF=A5=E6=96=99=E5=8F=B7?= =?UTF-8?q?=E7=9A=84BOM=E7=89=A9=E6=96=99=E5=90=AB=E7=A8=8E=E6=80=BB?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=88=90=E6=9C=AC+=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E8=BF=90=E8=BE=93=E6=88=90=E6=9C=AC+=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=88=90=E6=9C=AC+=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=88=90=E6=9C=AC+(=E8=AF=A5=E6=96=99?= =?UTF-8?q?=E5=8F=B7=E7=9A=84BOM=E7=89=A9=E6=96=99=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=80=BB=E9=87=87=E8=B4=AD=E6=88=90=E6=9C=AC/=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E6=80=BB=E7=89=A9=E6=96=99=E6=88=90=E6=9C=AC)*?= =?UTF-8?q?=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6=E7=9A=84=E6=80=BB=E7=BB=8F?= =?UTF-8?q?=E8=90=A5=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1?= =?UTF-8?q?=202.1=E3=80=81=E8=AF=A5=E6=96=99=E5=8F=B7=E7=9A=84BOM=E7=89=A9?= =?UTF-8?q?=E6=96=99=E5=90=AB=E7=A8=8E=E6=80=BB=E9=87=87=E8=B4=AD=E6=88=90?= =?UTF-8?q?=E6=9C=AC=3D=E6=89=8B=E5=A1=AB=E7=9A=84bom=E7=89=A9=E6=96=99?= =?UTF-8?q?=E7=9A=84=E6=80=BB=E7=9A=84=E5=90=AB=E7=A8=8E=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E4=BB=B7=E7=9A=84=E5=90=88=E8=AE=A1=203=E3=80=81?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E8=BF=90=E8=BE=93=E6=88=90=E6=9C=AC?= =?UTF-8?q?=EF=BC=9A=E6=89=8B=E5=A1=AB=EF=BC=88=E4=B8=9A=E5=8A=A1=E5=A1=AB?= =?UTF-8?q?=E5=86=99=EF=BC=89=20=E5=90=AB=E7=A8=8E=E8=BF=90=E8=BE=93?= =?UTF-8?q?=E6=88=90=E6=9C=AC=3D=EF=BC=881+0.13=EF=BC=89*=E4=B8=8D?= =?UTF-8?q?=E5=90=AB=E7=A8=8E=E8=BF=90=E8=BE=93=E6=88=90=E6=9C=AC=204?= =?UTF-8?q?=E3=80=81=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=9C=8D=E5=8A=A1=E6=88=90?= =?UTF-8?q?=E6=9C=AC=EF=BC=9A=E6=89=8B=E5=A1=AB=EF=BC=88=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E5=A1=AB=E5=86=99=EF=BC=89=20=E5=90=AB=E7=A8=8E=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E6=88=90=E6=9C=AC=3D=EF=BC=881+0.13=EF=BC=89*?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=9C=8D=E5=8A=A1=E6=88=90=E6=9C=AC?= =?UTF-8?q?=205=E3=80=81=E4=B8=8D=E5=90=AB=E7=A8=8E=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E6=88=90=E6=9C=AC=EF=BC=9A=E6=89=8B=E5=A1=AB=EF=BC=88=E5=B7=A5?= =?UTF-8?q?=E7=A8=8B=E5=A1=AB=E5=86=99=EF=BC=89=20=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=88=90=E6=9C=AC=3D=EF=BC=881+0.13=EF=BC=89?= =?UTF-8?q?*=E4=B8=8D=E5=90=AB=E7=A8=8E=E5=BC=80=E5=8F=91=E6=88=90?= =?UTF-8?q?=E6=9C=AC=206.1=E3=80=81=E8=AF=A5=E6=96=99=E5=8F=B7=E7=9A=84?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E7=BB=8F=E8=90=A5=E6=88=90=E6=9C=AC?= =?UTF-8?q?(RMB)=3D(=E8=AF=A5=E6=96=99=E5=8F=B7=E7=9A=84BOM=E7=89=A9?= =?UTF-8?q?=E6=96=99=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=80=BB=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=88=90=E6=9C=AC/=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6?= =?UTF-8?q?=E6=80=BB=E7=89=A9=E6=96=99=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=88=90?= =?UTF-8?q?=E6=9C=AC=E5=90=88=E8=AE=A1)*=E4=B8=8A=E4=B8=80=E5=B9=B4?= =?UTF-8?q?=E5=BA=A6=E7=9A=84=E6=80=BB=E7=BB=8F=E8=90=A5=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=206.1.1=E3=80=81?= =?UTF-8?q?=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6=E7=9A=84=E6=80=BB=E7=BB=8F?= =?UTF-8?q?=E8=90=A5=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88?= =?UTF-8?q?=E8=AE=A1=EF=BC=9A=E6=89=8B=E5=A1=AB=EF=BC=88=E6=80=BB=E7=BB=8F?= =?UTF-8?q?=E7=90=86=E5=A1=AB=EF=BC=89=206.1.2=E3=80=81=E4=B8=8A=E4=B8=80?= =?UTF-8?q?=E5=B9=B4=E5=BA=A6=E6=80=BB=E7=89=A9=E6=96=99=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=EF=BC=9A=E6=89=8B?= =?UTF-8?q?=E5=A1=AB=EF=BC=88=E6=80=BB=E7=BB=8F=E7=90=86=E5=A1=AB=EF=BC=89?= =?UTF-8?q?=207.1=E3=80=81=E8=AF=A5=E6=96=99=E5=8F=B7=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E7=BB=8F=E8=90=A5=E6=88=90=E6=9C=AC(RMB)=3D(=E8=AF=A5=E6=96=99?= =?UTF-8?q?=E5=8F=B7=E7=9A=84BOM=E7=89=A9=E6=96=99=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=80=BB=E9=87=87=E8=B4=AD=E6=88=90=E6=9C=AC/=E4=B8=8A?= =?UTF-8?q?=E4=B8=80=E5=B9=B4=E5=BA=A6=E6=80=BB=E7=89=A9=E6=96=99=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1)*=E4=B8=8A?= =?UTF-8?q?=E4=B8=80=E5=B9=B4=E5=BA=A6=E7=9A=84=E6=80=BB=E7=BB=8F=E8=90=A5?= =?UTF-8?q?=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=207.1.1?= =?UTF-8?q?=E3=80=81=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6=E7=9A=84=E6=80=BB?= =?UTF-8?q?=E7=BB=8F=E8=90=A5=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88?= =?UTF-8?q?=E8=AE=A1=EF=BC=9A=EF=BC=881+0.13=EF=BC=89*=E4=B8=8A=E4=B8=80?= =?UTF-8?q?=E5=B9=B4=E5=BA=A6=E7=9A=84=E6=80=BB=E7=BB=8F=E8=90=A5=E4=B8=8D?= =?UTF-8?q?=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=207.1.2?= =?UTF-8?q?=E3=80=81=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6=E6=80=BB=E7=89=A9?= =?UTF-8?q?=E6=96=99=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1?= =?UTF-8?q?=EF=BC=9A=EF=BC=881+0.13=EF=BC=89*=E4=B8=8A=E4=B8=80=E5=B9=B4?= =?UTF-8?q?=E5=BA=A6=E6=80=BB=E7=89=A9=E6=96=99=E4=B8=8D=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=208=E3=80=81=E8=A2=AB?= =?UTF-8?q?=E4=BC=B0=E4=BB=B7=E7=89=A9=E6=96=99=E7=9A=84=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E5=8D=95=E4=BB=B7=EF=BC=88RMB=EF=BC=89=3D=E8=A2=AB?= =?UTF-8?q?=E4=BC=B0=E4=BB=B7=E7=89=A9=E6=96=99=E7=9A=84=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E6=80=BB=E6=88=90=E6=9C=AC/=EF=BC=881-=E5=88=A9?= =?UTF-8?q?=E6=B6=A6=E7=8E=87=EF=BC=89=209=E3=80=81=E8=A2=AB=E4=BC=B0?= =?UTF-8?q?=E4=BB=B7=E7=89=A9=E6=96=99=E7=9A=84=E5=90=AB=E7=A8=8E=E5=8D=95?= =?UTF-8?q?=E4=BB=B7(RMB)=3D=E8=A2=AB=E4=BC=B0=E4=BB=B7=E7=89=A9=E6=96=99?= =?UTF-8?q?=E7=9A=84=E5=90=AB=E7=A8=8E=E6=80=BB=E6=88=90=E6=9C=AC/?= =?UTF-8?q?=EF=BC=881-=E5=88=A9=E6=B6=A6=E7=8E=87=EF=BC=89=2010=E3=80=81?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=80=BB=E4=BB=B7(RMB)=3D=E8=A2=AB?= =?UTF-8?q?=E4=BC=B0=E4=BB=B7=E7=89=A9=E6=96=99=E7=9A=84=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E5=8D=95=E4=BB=B7(RMB)*=E6=95=B0=E9=87=8F=2011?= =?UTF-8?q?=E3=80=81=E5=90=AB=E7=A8=8E=E6=80=BB=E4=BB=B7(RMB)=3D=E8=A2=AB?= =?UTF-8?q?=E4=BC=B0=E4=BB=B7=E7=89=A9=E6=96=99=E7=9A=84=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E5=8D=95=E4=BB=B7(RMB)*=E6=95=B0=E9=87=8F=2012=E3=80=81?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E5=8D=95=E4=BB=B7(=E7=BE=8E?= =?UTF-8?q?=E5=85=83)=3D=E8=A2=AB=E4=BC=B0=E4=BB=B7=E7=89=A9=E6=96=99?= =?UTF-8?q?=E7=9A=84=E4=B8=8D=E5=90=AB=E7=A8=8E=E5=8D=95=E4=BB=B7(RMB)/?= =?UTF-8?q?=E7=BE=8E=E5=85=83=E6=B1=87=E7=8E=87=20=E6=B3=A8:=E6=8D=A2?= =?UTF-8?q?=E7=AE=97=E5=90=8E=EF=BC=8C=E4=BF=9D=E7=95=99=E5=B0=8F=E6=95=B0?= =?UTF-8?q?=E7=82=B9=E5=90=8E=E4=B8=A4=E4=BD=8D=EF=BC=8C=E8=B6=85=E8=BF=87?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E5=9B=9B=E8=88=8D=E4=BA=94=E5=85=A5=2013?= =?UTF-8?q?=E3=80=81=E5=90=AB=E7=A8=8E=E5=8D=95=E4=BB=B7(=E7=BE=8E?= =?UTF-8?q?=E5=85=83)=3D=E4=B8=8D=E5=90=AB=E7=A8=8E=E5=8D=95=E4=BB=B7(?= =?UTF-8?q?=E7=BE=8E=E5=85=83)=2014=E3=80=81=E4=B8=8D=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=80=BB=E4=BB=B7(=E7=BE=8E=E5=85=83)=3D=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E5=8D=95=E4=BB=B7(=E7=BE=8E=E5=85=83)*=E6=95=B0?= =?UTF-8?q?=E9=87=8F=2015=E3=80=81=E5=90=AB=E7=A8=8E=E6=80=BB=E4=BB=B7(?= =?UTF-8?q?=E7=BE=8E=E5=85=83)=3D=E5=90=AB=E7=A8=8E=E5=8D=95=E4=BB=B7(?= =?UTF-8?q?=E7=BE=8E=E5=85=83)*=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalesEstimateServiceImpl.java | 132 +++++++++------ .../templates/sales/estimate/ceoAdd.html | 30 +++- .../sales/estimate/ceoAddDetail.html | 156 +++++++++--------- 3 files changed, 182 insertions(+), 136 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java index 764f3d23..13e5f09e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java @@ -300,28 +300,48 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService /* 下面的计算规则 -1、不含税总经营成本=不含税人工成本+不含税推广成本+不含税业务成本+不含税管理成本 -2、含税总经营成本=不含税总经营成本*(1+0.13) -3、不含税经营成本(RMB)=(该料号的BOM物料总不含税采购成本/总不含税物料成本)*总不含税经营成本 -4、含税经营成本(RMB)=(该料号的BOM物料总含税采购成本/总含税物料成本)*总含税经营成本 -5、不含税料号估价成本:该料号的BOM物料总不含税采购成本+不含税总经营成本+(该料号的BOM物料总不含税采购成本/总不含税物料成本)*总不含税经营成本 -新版:不含税料号估价成本:该料号的BOM物料总不含税采购成本+不含税运输成本+不含税服务成本+不含税开发成本+(该料号的BOM物料总不含税采购成本/总物料不含税成本)*总经营不含税成 +1、不含税料号估价成本=该料号的BOM物料不含税总采购成本+不含税运输成本+不含税服务成本+不含税开发成本+(该料号的BOM物料不含税总采购成本/不含税总物料成本)*上一年度的总经营不含税成本合计 +1.1、该料号的BOM物料不含税总采购成本=手填的bom物料的总的不含税采购单价的合计 -6、含税料号估价成本:该料号的BOM物料总含税采购成本+含税总经营成本+(该料号的BOM物料总含税采购成本/总含税物料成本)*总含税经营成本 -新版:含税料号估价成本:该料号的BOM物料总含税采购成本+含税运输成本+含税服务成本+含税开发成本+(该料号的BOM物料总含税采购成本/总物料含税成本)*总经营含税成本 +2、含税料号估价成本=该料号的BOM物料含税总采购成本+含税运输成本+含税服务成本+含税开发成本+(该料号的BOM物料含税总采购成本/含税总物料成本)*上一年度的总经营含税成本合计 +2.1、该料号的BOM物料含税总采购成本=手填的bom物料的总的含税采购单价的合计 -7、不含税单价(RMB):该料号不含税估价成本/(1-利润率) -8、含税单价(RMB)=该料号含税估价成本/(1-利润率) -9、不含税总价(RMB)=不含税单价(RMB)*数量 -10、含税总价(RMB)=含税单价(RMB)*数量 -11、不含税单价(美元)=不税单价(RMB)/美元汇率 +3、不含税运输成本:手填(业务填写) +含税运输成本=(1+0.13)*不含税运输成本 + +4、不含税服务成本:手填(业务填写) +含税服务成本=(1+0.13)*不含税服务成本 + +5、不含税开发成本:手填(工程填写) +含税开发成本=(1+0.13)*不含税开发成本 + +6.1、该料号的不含税经营成本(RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计 +6.1.1、上一年度的总经营不含税成本合计:手填(总经理填) +6.1.2、上一年度总物料不含税成本合计:手填(总经理填) + +7.1、该料号含税经营成本(RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计 + +7.1.1、上一年度的总经营含税成本合计:(1+0.13)*上一年度的总经营不含税成本合计 +7.1.2、上一年度总物料含税成本合计:(1+0.13)*上一年度总物料不含税成本合计 + +8、被估价物料的不含税单价(RMB)=被估价物料的不含税总成本/(1-利润率) + +9、被估价物料的含税单价(RMB)=被估价物料的含税总成本/(1-利润率) + +10、不含税总价(RMB)=被估价物料的不含税单价(RMB)*数量 + +11、含税总价(RMB)=被估价物料的含税单价(RMB)*数量 + +12、不含税单价(美元)=被估价物料的不含税单价(RMB)/美元汇率 注:换算后,保留小数点后两位,超过后的四舍五入 -12、含税单价(美元)=不含税单价(美元) -13、不含税总价(美元)=不含税单价(美元)*数量 -14、含税总价(美元)=含税单价(美元)*数量 -15、总含税物料成本 = 总不含税物料成本*(1+0.13) + +13、含税单价(美元)=不含税单价(美元) + +14、不含税总价(美元)=不含税单价(美元)*数量 + +15、含税总价(美元)=含税单价(美元)*数量 * */ @@ -360,25 +380,32 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService List salesEstimateDetailList = salesEstimate.getSalesEstimateDetailList(); // 获取销售估价详情列表 for (SalesEstimateDetail salesEstimateDetail : salesEstimateDetailList) { // 遍历销售估价详情列表 - BigDecimal noTaxLaborCosts = salesEstimateDetail.getNoTaxLaborCosts(); // 获取不含税的人工成本 - BigDecimal noTaxPromotionalCosts = salesEstimateDetail.getNoTaxPromotionalCosts(); // 获取不含税的推广成本 - BigDecimal noTaxBusinessCosts = salesEstimateDetail.getNoTaxBusinessCosts(); // 获取不含税的业务成本 - BigDecimal noTaxManagesCosts = salesEstimateDetail.getNoTaxManagesCosts(); // 获取不含税的管理成本 - BigDecimal noTaxMaterialCosts = salesEstimateDetail.getNoTaxMaterialCosts(); // 获取不含税的物料成本 +// BigDecimal noTaxLaborCosts = salesEstimateDetail.getNoTaxLaborCosts(); // 获取不含税的人工成本 +// BigDecimal noTaxPromotionalCosts = salesEstimateDetail.getNoTaxPromotionalCosts(); // 获取不含税的推广成本 +// BigDecimal noTaxBusinessCosts = salesEstimateDetail.getNoTaxBusinessCosts(); // 获取不含税的业务成本 +// BigDecimal noTaxManagesCosts = salesEstimateDetail.getNoTaxManagesCosts(); // 获取不含税的管理成本 + + BigDecimal totalOperatingCosts = salesEstimateDetail.getTotalOperatingCosts(); //上一年度不含税总经营成本 + BigDecimal noTaxMaterialCosts = salesEstimateDetail.getNoTaxMaterialCosts(); // 获取上一年度不含税的总物料成本 BigDecimal noTaxShippingCosts = salesEstimateDetail.getNoTaxShippingCosts(); //不含税运输成本 BigDecimal noTaxServiceCosts = salesEstimateDetail.getNoTaxServiceCosts(); //不含税服务成本 BigDecimal noTaxDevelopmentCosts = salesEstimateDetail.getNoTaxDevelopCosts();//不含税开发成本 + + BigDecimal taxShippingCosts = salesEstimateDetail.getNoTaxShippingCosts().multiply(BigDecimal.valueOf(1.13)) ; //含税运输成本 + BigDecimal taxServiceCosts = salesEstimateDetail.getNoTaxServiceCosts().multiply(BigDecimal.valueOf(1.13)); //含税服务成本 + BigDecimal taxDevelopmentCosts = salesEstimateDetail.getNoTaxDevelopCosts().multiply(BigDecimal.valueOf(1.13));//含税开发成本 + BigDecimal profitRate = salesEstimateDetail.getProfitRate().divide(BigDecimal.valueOf(100)); // 获取利润率并转换为小数形式 Long materialNum = salesEstimateDetail.getMaterialNum(); // 获取物料数量 - // 计算不含税总经营成本 - BigDecimal noAllTaxOperatingCosts = calculateNoTaxOperatingCosts( - noTaxLaborCosts, noTaxPromotionalCosts, noTaxBusinessCosts, noTaxManagesCosts); +// // 计算不含税总经营成本 +// BigDecimal noAllTaxOperatingCosts = calculateNoTaxOperatingCosts( +// noTaxLaborCosts, noTaxPromotionalCosts, noTaxBusinessCosts, noTaxManagesCosts); - // 计算含税总经营成本 - BigDecimal allTaxOperatingCosts = calculateTaxOperatingCosts(noAllTaxOperatingCosts); + // 计算上一年度含税总经营成本 + BigDecimal allTaxOperatingCosts = calculateTaxOperatingCosts(totalOperatingCosts); // 计算总含税物料成本 BigDecimal taxMaterialCosts = calculateTaxMaterialCosts(noTaxMaterialCosts); @@ -389,18 +416,18 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService // 计算物料总含税采购成本 BigDecimal totalTaxPurchaseRmb = calculateTotalTaxPurchaseRmb(estimateDetailMaterialList); - // 计算不含税经营成本(RMB),并保留两位小数 - BigDecimal noTaxOperatingCost = calculateNoTaxOperatingCost(totalNoTaxPurchaseRmb, noTaxMaterialCosts, noAllTaxOperatingCosts) + // 计算该料号的不含税经营成本(RMB),并保留两位小数 + BigDecimal noTaxOperatingCost = calculateNoTaxOperatingCost(totalNoTaxPurchaseRmb, noTaxMaterialCosts, totalOperatingCosts) .setScale(2, RoundingMode.HALF_UP); - // 计算含税经营成本(RMB),并保留两位小数 + // 计算该料号含税经营成本(RMB),并保留两位小数 BigDecimal taxOperatingCost = calculateTaxOperatingCost(totalTaxPurchaseRmb, taxMaterialCosts, allTaxOperatingCosts) .setScale(2, RoundingMode.HALF_UP); - // 计算不含税料号估价成本,并保留两位小数 - BigDecimal noTaxEstimateCost = calculateNoTaxEstimateCost(totalNoTaxPurchaseRmb, noTaxShippingCosts,noTaxServiceCosts,noTaxDevelopmentCosts,noAllTaxOperatingCosts, noTaxMaterialCosts) + // 计算该料号的不含税料号估价成本,并保留两位小数 + BigDecimal noTaxEstimateCost = calculateNoTaxEstimateCost(totalNoTaxPurchaseRmb, noTaxShippingCosts,noTaxServiceCosts,noTaxDevelopmentCosts,noTaxOperatingCost) .setScale(2, RoundingMode.HALF_UP); - // 计算含税料号估价成本,并保留两位小数 - BigDecimal taxEstimateCost = calculateTaxEstimateCost(totalTaxPurchaseRmb,noTaxShippingCosts,noTaxServiceCosts,noTaxDevelopmentCosts, allTaxOperatingCosts, taxMaterialCosts) + // 计算该料号的含税料号估价成本,并保留两位小数 + BigDecimal taxEstimateCost = calculateTaxEstimateCost(totalTaxPurchaseRmb,taxShippingCosts,taxServiceCosts,taxDevelopmentCosts, allTaxOperatingCosts) .setScale(2, RoundingMode.HALF_UP); // 计算不含税单价(RMB),并保留两位小数 @@ -434,8 +461,11 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService noTaxDollarMain = noTaxDollarMain.add(noTaxUnitPriceDollar); // 计算含税单价(美元),并保留两位小数 - BigDecimal taxUnitPriceDollar = calculateTaxUnitPriceDollar(taxUnitPriceRmb, usdRate) - .setScale(2, RoundingMode.HALF_UP); +// BigDecimal taxUnitPriceDollar = calculateTaxUnitPriceDollar(taxUnitPriceRmb, usdRate) +// .setScale(2, RoundingMode.HALF_UP); + BigDecimal taxUnitPriceDollar = noTaxUnitPriceDollar; + + // 计算主表的含税单价美元 taxDollarMain = taxDollarMain.add(taxUnitPriceDollar); @@ -499,8 +529,8 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService BigDecimal totalNoTaxPurchaseRmb = BigDecimal.ZERO; for (SalesEstimateDetailMaterial detailMaterial : estimateDetailMaterialList) { BigDecimal noTaxPurchaseRmb = detailMaterial.getNoTaxPurchaseRmb(); // 获取不含税采购单价 - Long useNum = detailMaterial.getUseNum(); // 获取用量 - totalNoTaxPurchaseRmb = totalNoTaxPurchaseRmb.add(noTaxPurchaseRmb.multiply(new BigDecimal(useNum))); // 计算总不含税采购成本 + //Long useNum = detailMaterial.getUseNum(); // 获取用量 + totalNoTaxPurchaseRmb = totalNoTaxPurchaseRmb.add(noTaxPurchaseRmb); // 计算总不含税采购成本 } return totalNoTaxPurchaseRmb; } @@ -510,16 +540,16 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService BigDecimal totalTaxPurchaseRmb = BigDecimal.ZERO; for (SalesEstimateDetailMaterial detailMaterial : estimateDetailMaterialList) { BigDecimal taxPurchaseRmb = detailMaterial.getTaxPurchaseRmb(); // 获取含税采购单价 - Long useNum = detailMaterial.getUseNum(); // 获取用量 - totalTaxPurchaseRmb = totalTaxPurchaseRmb.add(taxPurchaseRmb.multiply(new BigDecimal(useNum))); // 计算总含税采购成本 + // Long useNum = detailMaterial.getUseNum(); // 获取用量 + totalTaxPurchaseRmb = totalTaxPurchaseRmb.add(taxPurchaseRmb); // 计算总含税采购成本 } return totalTaxPurchaseRmb; } - // 计算不含税经营成本(RMB) - private BigDecimal calculateNoTaxOperatingCost(BigDecimal totalNoTaxPurchaseRmb, BigDecimal noTaxMaterialCosts, BigDecimal noAllTaxOperatingCosts) { + // 计算该料号的不含税经营成本(RMB) + private BigDecimal calculateNoTaxOperatingCost(BigDecimal totalNoTaxPurchaseRmb, BigDecimal noTaxMaterialCosts, BigDecimal totalOperatingCosts) { return totalNoTaxPurchaseRmb.divide(noTaxMaterialCosts, 2, RoundingMode.HALF_UP) - .multiply(noAllTaxOperatingCosts); + .multiply(totalOperatingCosts); } // 计算含税经营成本(RMB) @@ -531,23 +561,21 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService // 计算不含税料号估价成本 BigDecimal noTaxShippingCosts = salesEstimateDetail.getNoTaxShippingCosts(); //不含税运输成本 // BigDecimal noTaxServiceCosts = salesEstimateDetail.getNoTaxServiceCosts(); //不含税服务成本 // BigDecimal noTaxDevelopmentCosts = salesEstimateDetail.getNoTaxDevelopCosts();//不含税开发成本 - private BigDecimal calculateNoTaxEstimateCost(BigDecimal totalNoTaxPurchaseRmb, BigDecimal noTaxShippingCosts ,BigDecimal noTaxServiceCosts,BigDecimal noTaxDevelopmentCosts ,BigDecimal noAllTaxOperatingCosts,BigDecimal noTaxMaterialCosts) { + private BigDecimal calculateNoTaxEstimateCost(BigDecimal totalNoTaxPurchaseRmb, BigDecimal noTaxShippingCosts ,BigDecimal noTaxServiceCosts,BigDecimal noTaxDevelopmentCosts ,BigDecimal noTaxOperatingCost) { return totalNoTaxPurchaseRmb .add(noTaxShippingCosts) .add(noTaxServiceCosts) .add(noTaxDevelopmentCosts) - .add(totalNoTaxPurchaseRmb.divide(noTaxMaterialCosts, 2, RoundingMode.HALF_UP) - .multiply(noAllTaxOperatingCosts)); + .add(noTaxOperatingCost); } // 计算含税料号估价成本 - private BigDecimal calculateTaxEstimateCost(BigDecimal totalTaxPurchaseRmb, BigDecimal noTaxShippingCosts ,BigDecimal noTaxServiceCosts,BigDecimal noTaxDevelopmentCosts ,BigDecimal allTaxOperatingCosts, BigDecimal taxMaterialCosts) { + private BigDecimal calculateTaxEstimateCost(BigDecimal totalTaxPurchaseRmb, BigDecimal taxShippingCosts ,BigDecimal taxServiceCosts,BigDecimal taxDevelopmentCosts ,BigDecimal allTaxOperatingCosts) { return totalTaxPurchaseRmb - .add(noTaxShippingCosts) - .add(noTaxServiceCosts) - .add(noTaxDevelopmentCosts) - .add(totalTaxPurchaseRmb.divide(taxMaterialCosts, 2, RoundingMode.HALF_UP) - .multiply(allTaxOperatingCosts)); + .add(taxShippingCosts) + .add(taxServiceCosts) + .add(taxDevelopmentCosts) + .add(allTaxOperatingCosts); } // 计算不含税单价(RMB) diff --git a/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html b/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html index e92a1b4a..4e350c59 100644 --- a/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html +++ b/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html @@ -132,6 +132,7 @@ "noTaxDevelopCosts": null, // 初始化为 null 或 0 "noTaxShippingCosts": null, "noTaxServiceCosts": null, + "totalOperatingCosts": null, "noTaxMaterialCosts": null, "noTaxOperatingCosts": null, "taxOperatingCosts": null, @@ -145,6 +146,7 @@ var noTaxDevelopCosts = $('#noTaxDevelopCosts' + index).val(); var noTaxShippingCosts = $('#noTaxShippingCosts' + index).val(); var noTaxServiceCosts = $('#noTaxServiceCosts' + index).val(); + var totalOperatingCosts = $('#totalOperatingCosts' + index).val(); var noTaxMaterialCosts = $('#noTaxMaterialCosts' + index).val(); var noTaxOperatingCosts = $('#noTaxOperatingCosts' + index).val(); var taxOperatingCosts = $('#taxOperatingCosts' + index).val(); @@ -166,18 +168,23 @@ hasError = true; return; // 退出循环,阻止进一步处理 } + if (!totalOperatingCosts && totalOperatingCosts !== '0') { + $.modal.alertWarning("不含税总经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的不含税总经营成本"); + hasError = true; + return; // 退出循环,阻止进一步处理 + } if (!noTaxMaterialCosts && noTaxMaterialCosts !== '0') { - $.modal.alertWarning("物料成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的物料成本"); + $.modal.alertWarning("不含税物料成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的不含税物料成本"); hasError = true; return; // 退出循环,阻止进一步处理 } if (!noTaxOperatingCosts && noTaxOperatingCosts !== '0') { - $.modal.alertWarning("经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的经营成本"); + $.modal.alertWarning("不含税经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的不含税经营成本"); hasError = true; return; // 退出循环,阻止进一步处理 } if (!taxOperatingCosts && taxOperatingCosts !== '0') { - $.modal.alertWarning("税经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的税经营成本"); + $.modal.alertWarning("含税经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的含税经营成本"); hasError = true; return; // 退出循环,阻止进一步处理 } @@ -191,6 +198,7 @@ estimateMaterialDataList[index].noTaxDevelopCosts = noTaxDevelopCosts; estimateMaterialDataList[index].noTaxShippingCosts = noTaxShippingCosts; estimateMaterialDataList[index].noTaxServiceCosts = noTaxServiceCosts; + estimateMaterialDataList[index].totalOperatingCosts = totalOperatingCosts; estimateMaterialDataList[index].noTaxMaterialCosts = noTaxMaterialCosts; estimateMaterialDataList[index].noTaxOperatingCosts = noTaxOperatingCosts; estimateMaterialDataList[index].taxOperatingCosts = taxOperatingCosts; @@ -510,6 +518,8 @@ const taxOperatingCosts = ( (taxPurchaseRmb/allTaxMaterialCosts) * allTaxOperatingCosts ).toFixed(2) || ''; + + // 根据 `parentRow.profitRate` 设置利润率 let profitRateKey = 'aprofitRate'; switch (parentRow.profitRate) { @@ -651,8 +661,11 @@ // 遍历数据集计算不含税采购成本和含税采购成本 data.forEach(function(item) { item.rows.forEach(function(row) { - var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; - var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + // var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; + // var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + + var noTaxPurchaseRmb = row.noTaxPurchaseRmb; + var taxPurchaseRmb = row.taxPurchaseRmb; allNoTaxPurchaseRmb += noTaxPurchaseRmb; allTaxPurchaseRmb += taxPurchaseRmb; @@ -681,8 +694,11 @@ // 遍历数据集计算不含税采购成本和含税采购成本 data.forEach(function(item) { item.rows.forEach(function(row) { - var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; - var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + // var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; + // var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + + var noTaxPurchaseRmb = row.noTaxPurchaseRmb; + var taxPurchaseRmb = row.taxPurchaseRmb; allNoTaxPurchaseRmb += noTaxPurchaseRmb; allTaxPurchaseRmb += taxPurchaseRmb; diff --git a/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAddDetail.html b/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAddDetail.html index a9dc3d0c..087c8032 100644 --- a/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAddDetail.html +++ b/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAddDetail.html @@ -354,33 +354,33 @@ // 从 `salesEstimateDetailVo` 中获取其他成本信息 const { - noTaxLaborCosts = '', - noTaxPromotionalCosts = '', - noTaxBusinessCosts = '', - noTaxManagesCosts = '', - noTaxMaterialCosts = '' + totalOperatingCosts = '', //上一年度的总经营不含税成本合计 + noTaxMaterialCosts = '' // 上一年度总物料不含税成本合计 } = salesEstimateDetailVo || {}; - // 计算不含税总经营成本 - const noAllTaxOperatingCosts = ( - parseFloat(noTaxLaborCosts) + - parseFloat(noTaxBusinessCosts) + - parseFloat(noTaxManagesCosts) + - parseFloat(noTaxPromotionalCosts) + // 计算上一年度含税总经营成本,假设增值税率为 13% + const allTaxOperatingCosts = ( + parseFloat(totalOperatingCosts) * 1.13 ).toFixed(2) || ''; - // 计算含税总经营成本,假设增值税率为 13% - const allTaxOperatingCosts = ( - parseFloat(noAllTaxOperatingCosts) * 1.13 + //上一年度总物料含税成本合计 + const allTaxMaterialCosts = ( + parseFloat(noTaxMaterialCosts) * 1.13 ).toFixed(2) || ''; - //该料号的不含税经营成本 + + + //该料号的不含税经营成本 (RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计 const noTaxOperatingCosts = ( - (noTaxPurchaseRmb/noTaxMaterialCosts) * noAllTaxOperatingCosts + (noTaxPurchaseRmb/noTaxMaterialCosts) * totalOperatingCosts ).toFixed(2) || ''; - // 该料号的含税经营成本 + + + // 该料号的含税经营成本 (RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计 const taxOperatingCosts = ( - (taxPurchaseRmb/noTaxMaterialCosts) * allTaxOperatingCosts + (taxPurchaseRmb/allTaxMaterialCosts) * allTaxOperatingCosts ).toFixed(2) || ''; + + // 根据 `parentRow.profitRate` 设置利润率 let profitRateKey = 'aprofitRate'; switch (parentRow.profitRate) { @@ -409,10 +409,7 @@ noTaxDevelopCosts, noTaxShippingCosts, noTaxServiceCosts, - noTaxLaborCosts, - noTaxPromotionalCosts, - noTaxBusinessCosts, - noTaxManagesCosts, + totalOperatingCosts, noTaxMaterialCosts, noTaxOperatingCosts, taxOperatingCosts, @@ -427,10 +424,7 @@ noTaxDevelopCosts: '', noTaxShippingCosts: '', noTaxServiceCosts: '', - noTaxLaborCosts: '', - noTaxPromotionalCosts: '', - noTaxBusinessCosts: '', - noTaxManagesCosts: '', + totalOperatingCosts: '', noTaxMaterialCosts: '', noTaxOperatingCosts: '', taxOperatingCosts: '', @@ -453,24 +447,12 @@ formHtml += ''; formHtml += ''; formHtml += ''; - formHtml += '

总经营成本

'; + formHtml += '

上一年度总经营成本

'; formHtml += '
'; - formHtml += ''; - formHtml += ''; + formHtml += ''; + formHtml += ''; formHtml += '
'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '

总物料成本

'; + formHtml += '

上一年度总物料成本

'; formHtml += '
'; formHtml += ''; formHtml += ''; @@ -506,17 +488,8 @@ // 根据 input 的 id 或 name 进行相应的计算 switch (inputId) { - case 'noTaxLaborCosts' + index: - calculateOperatingCosts(inputValue, 'noTaxLaborCosts'); - break; - case 'noTaxPromotionalCosts' + index: - calculateOperatingCosts(inputValue, 'noTaxPromotionalCosts'); - break; - case 'noTaxBusinessCosts' + index: - calculateOperatingCosts(inputValue, 'noTaxBusinessCosts'); - break; - case 'noTaxManagesCosts' + index: - calculateOperatingCosts(inputValue, 'noTaxManagesCosts'); + case 'totalOperatingCosts' + index: + calculateOperatingCosts(inputValue, 'totalOperatingCosts'); break; case 'noTaxMaterialCosts' + index: updateMaterialCosts(inputValue); @@ -529,41 +502,47 @@ }); function calculateOperatingCosts(value, costType) { - var noAllTaxOperatingCosts = 0; + // var totalOperatingCosts = 0; var allNoTaxPurchaseRmb = 0; var allTaxPurchaseRmb = 0; - // 获取所有相关的不含税成本 - ['noTaxLaborCosts', 'noTaxPromotionalCosts', 'noTaxBusinessCosts', 'noTaxManagesCosts'].forEach(function(cost) { - var currentCost = parseFloat($form.find('#' + cost + index).val()); - noAllTaxOperatingCosts += currentCost; - }); + // // 获取所有相关的不含税成本 + // ['noTaxLaborCosts', 'noTaxPromotionalCosts', 'noTaxBusinessCosts', 'noTaxManagesCosts'].forEach(function(cost) { + // var currentCost = parseFloat($form.find('#' + cost + index).val()); + // noAllTaxOperatingCosts += currentCost; + // }); - // 更新不含税总经营成本 - $form.find('#noAllTaxOperatingCosts' + index).val(noAllTaxOperatingCosts.toFixed(2)); + // 更新上一年度不含税总经营成本 + var totalOperatingCosts = parseFloat($form.find('#totalOperatingCosts' + index).val()); - // 计算含税总经营成本 - var allTaxOperatingCosts = noAllTaxOperatingCosts * 1.13; + // 计算上一年度含税总经营成本 + var allTaxOperatingCosts = totalOperatingCosts * 1.13; $form.find('#allTaxOperatingCosts' + index).val(allTaxOperatingCosts.toFixed(2)); // 遍历数据集计算不含税采购成本和含税采购成本 data.forEach(function(item) { item.rows.forEach(function(row) { - var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; - var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + // var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; + // var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + + var noTaxPurchaseRmb = row.noTaxPurchaseRmb; + var taxPurchaseRmb = row.taxPurchaseRmb; allNoTaxPurchaseRmb += noTaxPurchaseRmb; allTaxPurchaseRmb += taxPurchaseRmb; }); }); - // 该料号的不含税经营成本 - var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val()); - var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * noAllTaxOperatingCosts; + + var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val());//不含税总物料成本 + var allTaxMaterialCosts = noTaxMaterialCosts * 1.13;//含税总物料成本 + + // 该料号的不含税经营成本(RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计 + var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * totalOperatingCosts; $form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2)); - // 该料号的含税经营成本 - var taxOperatingCosts = (allTaxPurchaseRmb / noTaxMaterialCosts) * allTaxOperatingCosts; + // 该料号含税经营成本(RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计 + var taxOperatingCosts = (allTaxPurchaseRmb / allTaxMaterialCosts) * allTaxOperatingCosts; $form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2)); } @@ -576,23 +555,46 @@ // 遍历数据集计算不含税采购成本和含税采购成本 data.forEach(function(item) { item.rows.forEach(function(row) { - var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; - var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + // var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; + // var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + + var noTaxPurchaseRmb = row.noTaxPurchaseRmb; + var taxPurchaseRmb = row.taxPurchaseRmb; allNoTaxPurchaseRmb += noTaxPurchaseRmb; allTaxPurchaseRmb += taxPurchaseRmb; }); }); - // 更新不含税经营成本 - var noAllTaxOperatingCosts = parseFloat($form.find('#noAllTaxOperatingCosts' + index).val()); - var noTaxOperatingCosts = (noTaxPurchaseRmb / value) * noAllTaxOperatingCosts; + // // 更新不含税经营成本 + // var noAllTaxOperatingCosts = parseFloat($form.find('#noAllTaxOperatingCosts' + index).val()); + // var noTaxOperatingCosts = (noTaxPurchaseRmb / value) * noAllTaxOperatingCosts; + // $form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2)); + // + // // 更新含税经营成本 + // var taxOperatingCosts = (taxPurchaseRmb / value) * noAllTaxOperatingCosts; + // $form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2)); + + // 更新上一年度不含税总经营成本 + var totalOperatingCosts = parseFloat($form.find('#totalOperatingCosts' + index).val()); + + // 计算上一年度含税总经营成本 + var allTaxOperatingCosts = totalOperatingCosts * 1.13; + $form.find('#allTaxOperatingCosts' + index).val(allTaxOperatingCosts.toFixed(2)); + + // 该料号的不含税经营成本(RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计 + var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val()); + var allTaxMaterialCosts = noTaxMaterialCosts * 1.13; + var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * totalOperatingCosts; $form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2)); - // 更新含税经营成本 - var taxOperatingCosts = (taxPurchaseRmb / value) * noAllTaxOperatingCosts; + // 该料号含税经营成本(RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计 + var taxOperatingCosts = (allTaxPurchaseRmb / allTaxMaterialCosts) * allTaxOperatingCosts; $form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2)); + + } + } });