|
@@ -5764,61 +5764,78 @@ func ConsumablesDeliveryThirty(orgID int64, record_time int64, goods *models.War
|
5764
|
5764
|
}
|
5765
|
5765
|
|
5766
|
5766
|
// 药品手动出库 递归方式
|
5767
|
|
-func AutoDrugDeliverInfoFourtyOne(orgID int64, prescribingNumber int64, warehouseout *models.DrugWarehouseOut, drup *models.BaseDrugLib, advice *models.DrugWarehouseOutInfo) (err error) {
|
|
5767
|
+func AutoDrugDeliverInfoFourtyOne(orgID int64, prescribingNumber int64, warehouseout *models.DrugWarehouseOut, drup *models.BaseDrugLib, advice *models.DrugWarehouseOutInfo, unit string) (err error) {
|
5768
|
5768
|
|
5769
|
5769
|
// 判断处方里药品单位是拆零单位还是包装单位, 如果是包装单位,则根据规格,将包装数量转为拆零数量
|
5770
|
5770
|
var deliver_number int64 = 0
|
|
5771
|
+
|
5771
|
5772
|
var stock_number int64 = 0
|
5772
|
|
- var retail_price float64
|
|
5773
|
+
|
|
5774
|
+ var drug_price float64
|
5773
|
5775
|
if advice.CountUnit == drup.MaxUnit {
|
5774
|
5776
|
deliver_number = prescribingNumber * drup.MinNumber
|
5775
|
|
- formatInt := strconv.FormatInt(prescribingNumber, 10)
|
5776
|
|
- floatcount, _ := strconv.ParseFloat(formatInt, 64)
|
5777
|
|
- retail_price = floatcount * advice.Price
|
|
5777
|
+
|
5778
|
5778
|
} else {
|
5779
|
5779
|
deliver_number = prescribingNumber
|
5780
|
|
- formatInt := strconv.FormatInt(prescribingNumber, 10)
|
5781
|
|
- floatcount, _ := strconv.ParseFloat(formatInt, 64)
|
5782
|
|
- retail_price = floatcount * advice.Price
|
|
5780
|
+
|
5783
|
5781
|
}
|
|
5782
|
+ if advice.CountUnit == drup.MaxUnit {
|
|
5783
|
+ drug_price = drup.RetailPrice
|
|
5784
|
+ }
|
|
5785
|
+ fmt.Println(drug_price)
|
5784
|
5786
|
|
5785
|
|
- lastWarehouse, _ := FindLastDrugWarehousingInfoByID(advice.DrugId, warehouseout.StorehouseId)
|
5786
|
|
- if lastWarehouse.StockMinNumber >= drup.MinNumber {
|
5787
|
|
- var stockMax int64
|
5788
|
|
- var stockMin int64
|
5789
|
|
- stockMax = lastWarehouse.StockMinNumber / drup.MinNumber
|
5790
|
|
- stockMin = lastWarehouse.StockMinNumber % drup.MinNumber
|
5791
|
|
- //fmt.Println("stockmax", stockMax)
|
5792
|
|
- //fmt.Println("stockMin", stockMin)
|
5793
|
|
- ChangeMaxNumber(lastWarehouse.ID, stockMax)
|
5794
|
|
- UpdateMinNumber(lastWarehouse.ID, stockMin)
|
|
5787
|
+ if advice.CountUnit == drup.MinUnit {
|
|
5788
|
+ drug_price = drup.MinPrice
|
5795
|
5789
|
}
|
5796
|
5790
|
|
5797
|
|
- warehouse, err := FindLastDrugWarehousingInfoByID(advice.DrugId, warehouseout.StorehouseId)
|
|
5791
|
+ if advice.CountUnit != drup.MaxUnit || advice.CountUnit != drup.MinUnit {
|
|
5792
|
+ drug_price = drup.RetailPrice
|
|
5793
|
+ }
|
5798
|
5794
|
|
5799
|
|
- if err != nil {
|
|
5795
|
+ // 根据先进先出原则,查询最先入库的批次,进行出库
|
|
5796
|
+ // 如果没有对应的库存,则报错
|
|
5797
|
+ lastWarehouse, _ := FindLastDrugWarehousingInfoByID(advice.DrugId, advice.StorehouseId)
|
5800
|
5798
|
|
5801
|
|
- return err
|
|
5799
|
+ if lastWarehouse.MaxUnit != lastWarehouse.MinUnit && drup.MaxUnit != drup.MinUnit && lastWarehouse.MinUnit != "" {
|
|
5800
|
+ if lastWarehouse.StockMinNumber >= drup.MinNumber {
|
|
5801
|
+ var stockMax int64
|
|
5802
|
+ var stockMin int64
|
|
5803
|
+ stockMax = lastWarehouse.StockMinNumber / drup.MinNumber
|
|
5804
|
+ stockMin = lastWarehouse.StockMinNumber % drup.MinNumber
|
|
5805
|
+
|
|
5806
|
+ ChangeMaxNumber(lastWarehouse.ID, stockMax)
|
|
5807
|
+ UpdateMinNumber(lastWarehouse.ID, stockMin)
|
|
5808
|
+
|
|
5809
|
+ }
|
5802
|
5810
|
}
|
5803
|
5811
|
|
|
5812
|
+ if lastWarehouse.MaxUnit == lastWarehouse.MinUnit && drup.MaxUnit != drup.MinUnit && lastWarehouse.MinUnit != "" {
|
|
5813
|
+
|
|
5814
|
+ lastWarehouse.StockMaxNumber = lastWarehouse.StockMaxNumber + lastWarehouse.StockMinNumber
|
|
5815
|
+ ChangeMaxNumberOne(lastWarehouse.ID, lastWarehouse.StockMaxNumber)
|
|
5816
|
+
|
|
5817
|
+ }
|
|
5818
|
+
|
|
5819
|
+ warehouse, err := FindLastDrugWarehousingInfoByID(advice.DrugId, advice.StorehouseId)
|
|
5820
|
+
|
5804
|
5821
|
// 将该批次的剩余库存数量转换为拆零数量
|
5805
|
5822
|
if warehouse.MaxUnit == drup.MaxUnit && drup.MaxUnit != drup.MinUnit {
|
|
5823
|
+
|
5806
|
5824
|
stock_number = warehouse.StockMaxNumber*drup.MinNumber + warehouse.StockMinNumber
|
|
5825
|
+
|
5807
|
5826
|
}
|
5808
|
5827
|
if warehouse.MaxUnit == drup.MinUnit && drup.MaxUnit != drup.MinUnit {
|
|
5828
|
+
|
5809
|
5829
|
stock_number = warehouse.StockMaxNumber + warehouse.StockMinNumber
|
|
5830
|
+
|
5810
|
5831
|
}
|
5811
|
5832
|
if warehouse.MaxUnit == drup.MaxUnit && drup.MaxUnit == drup.MinUnit {
|
|
5833
|
+
|
5812
|
5834
|
stock_number = warehouse.StockMaxNumber*drup.MinNumber + warehouse.StockMinNumber
|
5813
|
|
- }
|
5814
|
5835
|
|
5815
|
|
- fmt.Println("stock_number", stock_number)
|
5816
|
|
- fmt.Println("deliver_number", deliver_number)
|
5817
|
|
- // 当库存数量大于或等于出库数量的话,则正常出库该批次
|
|
5836
|
+ }
|
5818
|
5837
|
if stock_number >= deliver_number {
|
5819
|
5838
|
|
5820
|
|
- // 出库完成后,要减去对应批次的库存数量
|
5821
|
|
- // 判断处方里药品单位是拆零单位还是包装单位, 如果是拆零单位,则根据规格,将拆零数量转为包装数量
|
5822
|
5839
|
var maxNumber int64 = 0
|
5823
|
5840
|
var minNumber int64 = 0
|
5824
|
5841
|
|
|
@@ -5836,12 +5853,16 @@ func AutoDrugDeliverInfoFourtyOne(orgID int64, prescribingNumber int64, warehous
|
5836
|
5853
|
}
|
5837
|
5854
|
|
5838
|
5855
|
if drup.MinUnit == warehouse.MaxUnit && drup.MaxUnit != drup.MinUnit {
|
|
5856
|
+ //fmt.Println("金1")
|
5839
|
5857
|
warehouse.StockMaxNumber = warehouse.StockMaxNumber - maxNumber*drup.MinNumber
|
5840
|
5858
|
}
|
|
5859
|
+
|
5841
|
5860
|
if drup.MaxUnit == warehouse.MaxUnit && drup.MaxUnit != drup.MinUnit {
|
|
5861
|
+ //fmt.Println("金2")
|
5842
|
5862
|
warehouse.StockMaxNumber = warehouse.StockMaxNumber - maxNumber
|
5843
|
5863
|
}
|
5844
|
5864
|
if drup.MaxUnit == warehouse.MaxUnit && drup.MaxUnit == drup.MinUnit {
|
|
5865
|
+ //fmt.Println("金3")
|
5845
|
5866
|
warehouse.StockMaxNumber = warehouse.StockMaxNumber - maxNumber
|
5846
|
5867
|
}
|
5847
|
5868
|
|
|
@@ -5854,37 +5875,42 @@ func AutoDrugDeliverInfoFourtyOne(orgID int64, prescribingNumber int64, warehous
|
5854
|
5875
|
|
5855
|
5876
|
warehouse.Mtime = time.Now().Unix()
|
5856
|
5877
|
|
|
5878
|
+ //fmt.Println("stockmin", warehouse.StockMinNumber)
|
|
5879
|
+ //fmt.Println("minnubmerr", minNumber)
|
5857
|
5880
|
if warehouse.StockMinNumber < minNumber {
|
|
5881
|
+ //fmt.Println("金4")
|
5858
|
5882
|
warehouse.StockMaxNumber = warehouse.StockMaxNumber - 1
|
5859
|
5883
|
if warehouse.MaxUnit != warehouse.MinUnit {
|
5860
|
5884
|
warehouse.StockMinNumber = warehouse.StockMinNumber + drup.MinNumber - minNumber
|
5861
|
5885
|
}
|
5862
|
|
-
|
|
5886
|
+ if minNumber == 2 && warehouse.MaxUnit == warehouse.MinUnit && warehouse.StockMinNumber == 0 {
|
|
5887
|
+ warehouse.StockMaxNumber = warehouse.StockMaxNumber - 1
|
|
5888
|
+ }
|
5863
|
5889
|
} else {
|
5864
|
|
- //fmt.Println("maxNumber23323323332322323w9", maxNumber)
|
5865
|
|
- //fmt.Println("maxNumber23323323332322323w9", minNumber)
|
|
5890
|
+ //fmt.Println("金5")
|
5866
|
5891
|
if minNumber > 0 {
|
5867
|
|
- if minNumber == 1 && maxNumber == 1 && drup.MaxUnit != drup.MinUnit {
|
5868
|
|
- warehouse.StockMinNumber = warehouse.StockMinNumber - deliver_number
|
5869
|
|
- } else {
|
5870
|
|
- if (warehouse.StockMinNumber - minNumber) >= 0 {
|
5871
|
|
- warehouse.StockMinNumber = warehouse.StockMinNumber - minNumber
|
5872
|
|
- }
|
5873
|
|
-
|
|
5892
|
+ if (warehouse.StockMinNumber - minNumber) >= 0 {
|
|
5893
|
+ warehouse.StockMinNumber = warehouse.StockMinNumber - minNumber
|
5874
|
5894
|
}
|
|
5895
|
+
|
5875
|
5896
|
}
|
5876
|
5897
|
|
5877
|
|
- if minNumber == 0 && maxNumber != 1 {
|
|
5898
|
+ if minNumber == 0 && maxNumber != 1 && warehouse.StockMaxNumber <= 0 {
|
|
5899
|
+ //fmt.Println("6")
|
5878
|
5900
|
if warehouse.StockMinNumber > 0 {
|
5879
|
|
- if (warehouse.StockMinNumber - deliver_number) >= 0 {
|
|
5901
|
+ if warehouse.StockMinNumber-deliver_number >= 0 {
|
5880
|
5902
|
warehouse.StockMinNumber = warehouse.StockMinNumber - deliver_number
|
5881
|
5903
|
}
|
|
5904
|
+
|
5882
|
5905
|
}
|
|
5906
|
+
|
5883
|
5907
|
}
|
|
5908
|
+
|
5884
|
5909
|
}
|
5885
|
5910
|
|
5886
|
|
- if maxNumber == 1 && minNumber == 0 && drup.MaxUnit != drup.MinUnit {
|
|
5911
|
+ if maxNumber == 1 && minNumber == 0 && drup.MaxUnit != drup.MinUnit && warehouse.MaxUnit != warehouse.MinUnit {
|
5887
|
5912
|
if (warehouse.StockMinNumber - deliver_number) >= 0 {
|
|
5913
|
+ //fmt.Println("金7")
|
5888
|
5914
|
warehouse.StockMinNumber = warehouse.StockMinNumber - deliver_number
|
5889
|
5915
|
}
|
5890
|
5916
|
|
|
@@ -5946,7 +5972,7 @@ func AutoDrugDeliverInfoFourtyOne(orgID int64, prescribingNumber int64, warehous
|
5946
|
5972
|
StockCount: advice.StockCount,
|
5947
|
5973
|
WarehousingDetailId: warehouse.ID,
|
5948
|
5974
|
OverCount: over_count,
|
5949
|
|
- RetailPrice: retail_price, //手动出库出库价格
|
|
5975
|
+ RetailPrice: drug_price, //手动出库出库价格
|
5950
|
5976
|
WarehousingId: warehouse.ID,
|
5951
|
5977
|
SystemTime: advice.SysRecordTime,
|
5952
|
5978
|
}
|
|
@@ -5964,7 +5990,7 @@ func AutoDrugDeliverInfoFourtyOne(orgID int64, prescribingNumber int64, warehous
|
5964
|
5990
|
} else {
|
5965
|
5991
|
stock_number_int := strconv.FormatInt(stock_number, 10)
|
5966
|
5992
|
stock_number_int_count, _ := strconv.ParseFloat(stock_number_int, 64)
|
5967
|
|
- retail_price = stock_number_int_count * advice.Price
|
|
5993
|
+ drug_price = stock_number_int_count * advice.Price
|
5968
|
5994
|
//扣减库存
|
5969
|
5995
|
warehouse.StockMaxNumber = 0
|
5970
|
5996
|
warehouse.StockMinNumber = 0
|
|
@@ -6014,7 +6040,7 @@ func AutoDrugDeliverInfoFourtyOne(orgID int64, prescribingNumber int64, warehous
|
6014
|
6040
|
LastPrice: warehouse.Price,
|
6015
|
6041
|
StockCount: advice.StockCount,
|
6016
|
6042
|
OverCount: over_count,
|
6017
|
|
- RetailPrice: retail_price, //手动出库出库价格
|
|
6043
|
+ RetailPrice: drug_price, //手动出库出库价格
|
6018
|
6044
|
WarehousingId: warehouse.ID,
|
6019
|
6045
|
WarehousingDetailId: warehouse.ID,
|
6020
|
6046
|
SystemTime: advice.SysRecordTime,
|
|
@@ -6029,7 +6055,7 @@ func AutoDrugDeliverInfoFourtyOne(orgID int64, prescribingNumber int64, warehous
|
6029
|
6055
|
|
6030
|
6056
|
advice.CountUnit = drup.MinUnit
|
6031
|
6057
|
|
6032
|
|
- AutoDrugDeliverInfoFourtyOne(orgID, prescribingNumber_two_temp, warehouseout, drup, advice)
|
|
6058
|
+ AutoDrugDeliverInfoFourtyOne(orgID, prescribingNumber_two_temp, warehouseout, drup, advice, unit)
|
6033
|
6059
|
}
|
6034
|
6060
|
|
6035
|
6061
|
return
|