|
@@ -806,6 +806,7 @@ func AutoDrugDeliverInfo(orgID int64, prescribingNumber int64, warehouseout *mod
|
806
|
806
|
|
807
|
807
|
fmt.Println("库存1", stock_number)
|
808
|
808
|
fmt.Println("c出库数量", deliver_number)
|
|
809
|
+
|
809
|
810
|
// 当库存数量大于或等于出库数量的话,则正常出库该批次
|
810
|
811
|
if stock_number >= deliver_number {
|
811
|
812
|
|
|
@@ -877,6 +878,9 @@ func AutoDrugDeliverInfo(orgID int64, prescribingNumber int64, warehouseout *mod
|
877
|
878
|
if advice.CountUnit == drup.MinUnit {
|
878
|
879
|
maxNumber = prescribingNumber / drup.MinNumber
|
879
|
880
|
minNumber = prescribingNumber % drup.MinNumber
|
|
881
|
+ if warehouse.StockMaxNumber == 0 && drup.MaxUnit == drup.MinUnit {
|
|
882
|
+ minNumber = maxNumber
|
|
883
|
+ }
|
880
|
884
|
} else {
|
881
|
885
|
maxNumber = prescribingNumber
|
882
|
886
|
}
|
|
@@ -895,6 +899,11 @@ func AutoDrugDeliverInfo(orgID int64, prescribingNumber int64, warehouseout *mod
|
895
|
899
|
} else {
|
896
|
900
|
warehouse.StockMinNumber = warehouse.StockMinNumber - minNumber
|
897
|
901
|
}
|
|
902
|
+ fmt.Println("ware233232322332323232", warehouse.StockMaxNumber)
|
|
903
|
+ fmt.Println("ware233232322332323232", warehouse.StockMinNumber)
|
|
904
|
+ if warehouse.StockMaxNumber == 1 && warehouse.StockMinNumber == 1 && drup.MaxUnit == drup.MinUnit {
|
|
905
|
+ warehouse.StockMinNumber = 0
|
|
906
|
+ }
|
898
|
907
|
|
899
|
908
|
if warehouse.StockMaxNumber < 0 {
|
900
|
909
|
return errors.New("库存数量不足")
|
|
@@ -2406,9 +2415,13 @@ func NewHisDrugDeliverInfo(orgID int64, prescribingNumber float64, warehouseout
|
2406
|
2415
|
}
|
2407
|
2416
|
|
2408
|
2417
|
warehouse.StockMaxNumber = warehouse.StockMaxNumber - maxNumber
|
|
2418
|
+ if warehouse.StockMaxNumber < 0 {
|
|
2419
|
+ warehouse.StockMaxNumber = 0
|
|
2420
|
+ }
|
2409
|
2421
|
warehouse.Mtime = time.Now().Unix()
|
2410
|
2422
|
|
2411
|
2423
|
if warehouse.StockMinNumber < minNumber {
|
|
2424
|
+ fmt.Println("233323232233223")
|
2412
|
2425
|
warehouse.StockMaxNumber = warehouse.StockMaxNumber - 1
|
2413
|
2426
|
warehouse.StockMinNumber = warehouse.StockMinNumber + drup.MinNumber - minNumber
|
2414
|
2427
|
} else {
|
|
@@ -2782,7 +2795,7 @@ func ConsumablesDeliveryNight(orgID int64, record_time int64, goods *models.Ware
|
2782
|
2795
|
// 根据先进先出原则,查询最先入库的批次,进行出库
|
2783
|
2796
|
|
2784
|
2797
|
// 如果没有对应的库存,则报错
|
2785
|
|
- warehouse, err := FindFirstWarehousingInfoByStockNight(goods.GoodId, goods.GoodTypeId, warehouse_out_id)
|
|
2798
|
+ warehouse, err := FindFirstWarehousingInfoByStockNight(goods.GoodId, goods.GoodTypeId, warehouse_out_id, goods.IsSource)
|
2786
|
2799
|
if err != nil {
|
2787
|
2800
|
|
2788
|
2801
|
return err
|
|
@@ -2970,13 +2983,21 @@ func ConsumablesDeliveryNight(orgID int64, record_time int64, goods *models.Ware
|
2970
|
2983
|
return nil
|
2971
|
2984
|
}
|
2972
|
2985
|
|
2973
|
|
-func FindFirstWarehousingInfoByStockNight(good_id int64, good_type_id int64, warehouse_out_id int64) (info models.WarehousingInfo, err error) {
|
2974
|
|
- err = readDb.Model(&models.WarehousingInfo{}).Where("good_id = ? AND good_type_id = ? AND status = 1 and stock_count > 0 and supply_warehouse_id = ?", good_id, good_type_id, warehouse_out_id).Order("ctime").First(&info).Error
|
|
2986
|
+func FindFirstWarehousingInfoByStockNight(good_id int64, good_type_id int64, warehouse_out_id int64, is_source int64) (info models.WarehousingInfo, err error) {
|
|
2987
|
+
|
|
2988
|
+ fmt.Println("is_source2233232233232323232232323", is_source)
|
|
2989
|
+ if is_source == 1 {
|
|
2990
|
+ err = readDb.Model(&models.WarehousingInfo{}).Where("good_id = ? AND good_type_id = ? AND status = 1 and stock_count > 0 and supply_warehouse_id = ?", good_id, good_type_id, warehouse_out_id).Order("ctime").First(&info).Error
|
|
2991
|
+
|
|
2992
|
+ }
|
|
2993
|
+ if is_source == 2 || is_source == 0 {
|
|
2994
|
+ err = readDb.Model(&models.WarehousingInfo{}).Where("good_id = ? AND good_type_id = ? AND status = 1 and stock_count > 0", good_id, good_type_id).Order("ctime").First(&info).Error
|
|
2995
|
+ }
|
2975
|
2996
|
return info, err
|
2976
|
2997
|
}
|
2977
|
2998
|
|
2978
|
2999
|
// 药品出库 递归方式
|
2979
|
|
-func AutoDrugDeliverInfoNight(orgID int64, prescribingNumber int64, warehouseout *models.DrugWarehouseOut, drup *models.BaseDrugLib, advice *models.DrugWarehouseOutInfo) (err error) {
|
|
3000
|
+func AutoDrugDeliverInfoNight(orgID int64, prescribingNumber int64, warehouseout *models.DrugWarehouseOut, drup *models.BaseDrugLib, advice *models.DrugWarehouseOutInfo, warehouse_out_id int64, cancel_out_id int64) (err error) {
|
2980
|
3001
|
|
2981
|
3002
|
// 判断处方里药品单位是拆零单位还是包装单位, 如果是包装单位,则根据规格,将包装数量转为拆零数量
|
2982
|
3003
|
var deliver_number int64 = 0
|
|
@@ -2992,7 +3013,7 @@ func AutoDrugDeliverInfoNight(orgID int64, prescribingNumber int64, warehouseout
|
2992
|
3013
|
// 如果没有对应的库存,则报错
|
2993
|
3014
|
//开启事物
|
2994
|
3015
|
|
2995
|
|
- warehouse, err := FindLastDrugWarehousingInfoByID(advice.DrugId)
|
|
3016
|
+ warehouse, err := FindLastDrugWarehousingInfoByIDSix(advice.DrugId, warehouse_out_id, advice.IsSource)
|
2996
|
3017
|
|
2997
|
3018
|
if err != nil {
|
2998
|
3019
|
|
|
@@ -3077,16 +3098,25 @@ func AutoDrugDeliverInfoNight(orgID int64, prescribingNumber int64, warehouseout
|
3077
|
3098
|
if advice.CountUnit == drup.MinUnit {
|
3078
|
3099
|
maxNumber = prescribingNumber / drup.MinNumber
|
3079
|
3100
|
minNumber = prescribingNumber % drup.MinNumber
|
|
3101
|
+ if warehouse.StockMaxNumber == 0 && drup.MaxUnit == drup.MinUnit {
|
|
3102
|
+ minNumber = maxNumber
|
|
3103
|
+ }
|
3080
|
3104
|
} else {
|
3081
|
3105
|
maxNumber = prescribingNumber
|
3082
|
3106
|
}
|
3083
|
|
-
|
|
3107
|
+ fmt.Println("maxNUMBER23323232323323322323", maxNumber)
|
|
3108
|
+ fmt.Println("MIN_NUMBWEEEWEWEWWEEWEWEWWE", minNumber)
|
|
3109
|
+ fmt.Println("编辑55555555555555")
|
3084
|
3110
|
if warehouse.StockMaxNumber < maxNumber {
|
3085
|
3111
|
|
3086
|
3112
|
return errors.New("库存数量不足")
|
3087
|
3113
|
}
|
3088
|
3114
|
|
3089
|
3115
|
warehouse.StockMaxNumber = warehouse.StockMaxNumber - maxNumber
|
|
3116
|
+ if warehouse.StockMaxNumber < 0 {
|
|
3117
|
+ warehouse.StockMaxNumber = 0
|
|
3118
|
+ }
|
|
3119
|
+
|
3090
|
3120
|
warehouse.Mtime = time.Now().Unix()
|
3091
|
3121
|
|
3092
|
3122
|
if warehouse.StockMinNumber < minNumber {
|
|
@@ -3099,6 +3129,9 @@ func AutoDrugDeliverInfoNight(orgID int64, prescribingNumber int64, warehouseout
|
3099
|
3129
|
if warehouse.StockMaxNumber < 0 {
|
3100
|
3130
|
return errors.New("库存数量不足")
|
3101
|
3131
|
}
|
|
3132
|
+ if warehouse.StockMaxNumber == 1 && warehouse.StockMinNumber == 1 && drup.MaxUnit == drup.MinUnit {
|
|
3133
|
+ warehouse.StockMinNumber = 0
|
|
3134
|
+ }
|
3102
|
3135
|
|
3103
|
3136
|
errThree := UpDateDrugWarehouseInfoByStock(&warehouse)
|
3104
|
3137
|
if errThree != nil {
|
|
@@ -3182,7 +3215,7 @@ func AutoDrugDeliverInfoNight(orgID int64, prescribingNumber int64, warehouseout
|
3182
|
3215
|
prescribingNumber_two_temp := deliver_number - stock_number
|
3183
|
3216
|
advice.CountUnit = drup.MinUnit
|
3184
|
3217
|
|
3185
|
|
- AutoDrugDeliverInfoNight(orgID, prescribingNumber_two_temp, warehouseout, drup, advice)
|
|
3218
|
+ AutoDrugDeliverInfoNight(orgID, prescribingNumber_two_temp, warehouseout, drup, advice, warehouse_out_id, cancel_out_id)
|
3186
|
3219
|
}
|
3187
|
3220
|
|
3188
|
3221
|
return
|