著者:大内智明
今回は、 マスタの中でも重要な店舗商品マスタについて説明します。
記事本文掲載のシェルスクリプトマガジンvol.45は以下リンク先でご購入できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
#!/bin/bash ?vx # tensho-tenkai >>> 店舗商品マスタ展開出力 # Usage : tensho-tenkai -d <yyyymmdd> -g <MD業務グループ> \ # -s <商品コード>/-S <商品リスト> [ -t <店舗コード> / -T <店舗リスト> ] [-i] <中略> #///////////////////////////////////////////////////////////////////////// # # ステップ1:適用日の売価項目マスタのトランと、個店売価項目マスタのトランから、 # 店舗商品売価項目のトランを生成する # # ステップ2:適用日の原価マスタのトランから、店舗商品原価項目のトランを生成する # # ステップ3:店舗商品売価項目のトランと店舗商品原価項目のトランを連結する # #///////////////////////////////////////////////////////////////////////// #///////////////////////////////////////////////////////////////////////// # ステップ2:予約のある適用日毎に原価マスタのトランから、店舗商品原価項目のトランを生成する #///////////////////////////////////////////////////////////////////////// <中略> # 発注項目マスタ 予約ファイル # # 個店 echo ${hacd}/TBL/SABUN/HACHU_KOUMOKU_KOTEN.M${mdg}.YOYAKU.?????????????? | # 1:商品コード* 2:店舗グループコード*("_"固定) 3:店舗コード* 4:予約コード # 5:基本フラグ 6:発注先コード 7:原価(税抜) 8:原価(税込) # 9:発注単位数 10:最大発注数 11:発注開始日 12:返品不可区分 # 13:発注終了日 14:発注停止理由 15:備考 16:登録日 # 17:更新フラグ 18:適用日 19:ユーザID 20:入力日時 ugrep -v '\?' | xargs cat | cjoin0 key=1 $tmp-shohin - | cjoin0 key=3 $tmp-ten - | gawk '$18<="'$sday'"' | msort key=1/3@18@20@17 > $tmp-hachukoten.m${mdg}.input join0 key=1 $tmp-shohin ${hacd}/TBL/SABUN/HACHU_KOUMOKU_KOTEN.M${mdg}.YOYAKU | cjoin0 key=3 $tmp-ten - | gawk '$18<="'$sday'"' | up3 key=1/3@18@20@17 - $tmp-hachukoten.m${mdg}.input | join0 key=1 $tmp-shohin - | underlay num=3 | self 1/NF > $tmp-HACHU_KOUMOKU_KOTEN.M${mdg}.YOYAKU yoyaku_genka_koten=$tmp-HACHU_KOUMOKU_KOTEN.M${mdg}.YOYAKU # 発注項目マスタ 個店設定 if [ -s ${hacd}/TBL/HACHU_KOUMOKU_KOTEN.M${mdg}.RIREKI ]; then if [ -s $tmp-shohin ] ; then if [ "$(gyo $tmp-ten)" -ge 300 -a "$(gyo $tmp-shohin)" -ge 5000 ] ; then # 商品数・店舗数がともに多い場合は一括ファイルを使用する join0 key=1 $tmp-shohin ${hacd}/TBL/HACHU_KOUMOKU_KOTEN.M${mdg}.RIREKI | cjoin0 key=3 $tmp-ten - else # 店舗コードのリストをだす lineup 1 $tmp-ten > $tmp-ten.list # 商品下3桁コードのリストをだす self 1.10.4 $tmp-shohin | lineup 1 > $tmp-jan.list # 対象商品から該当するファイルを集める # # 店舗コード指定があるなしでLV3個店マスタの参照先が異なる。 # ==> 店舗コード指定があると店舗別LV3を参照 # ==> 店舗コード指定がなしと商品別LV3を参照 # # 店舗数が商品数より少ない場合 if [ "$(gyo $tmp-ten)" -lt 80 -a "$(gyo $tmp-shohin | calc '$1*2' 1 | self 2)" -ge "$(gyo $tmp-ten)" ] ; then for tencd in $(cat $tmp-ten.list); do [ ! -s ${hacd}/TBL/TENPO/$tencd/HACHU_KOUMOKU_KOTEN.M${mdg}.RIREKI ] && continue echo "${hacd}/TBL/TENPO/$tencd/HACHU_KOUMOKU_KOTEN.M${mdg}.RIREKI" done > ${tmp}-hachu_koten_list # 商品数が店舗数より少ない場合 else for jancd in $(cat $tmp-jan.list); do [ ! -s ${hacd}/TBL/SHOHN/$jancd/HACHU_KOUMOKU_KOTEN.M${mdg}.RIREKI ] && continue echo "${hacd}/TBL/SHOHN/$jancd/HACHU_KOUMOKU_KOTEN.M${mdg}.RIREKI" done > ${tmp}-hachu_koten_list fi # 並列数 paranum=2 for fl in $(cat ${tmp}-hachu_koten_list) ;do [ ! -s ${fl} ] && continue echo ${fl} done | eval distribute ${tmp}-script.{1..$paranum} for n in $(seq $paranum); do echo "echo $(tateyoko ${tmp}-script.$n) | xargs cat | cjoin0 key=1 $tmp-shohin - | cjoin0 key=3 $tmp-ten - > $tmp-scr.out.$n" | ush -e & done wait echo $tmp-scr.out.* | xargs cat | cjoin0 key=1 $tmp-shohin - | cjoin0 key=3 $tmp-ten - | msort key=1/3@18@20@17 - fi else cat /dev/null fi | if [ -s ${yoyaku_genka_koten} ]; then # ---underlay対応--- #gawk '$(NF-2)<="'${sday}'"' > $tmp-hachu_koten_rireki cat > $tmp-hachu_koten_rireki up3 key=1/3@18@20@17 $tmp-hachu_koten_rireki ${yoyaku_genka_koten} | underlay num=3 - | self 1/NF > $tmp-hachu_koten_yoyaku.all up3 key=1/3@18@20@17 $tmp-hachu_koten_rireki $tmp-hachu_koten_yoyaku.all # ---underlay対応--- else cat - fi | cjoin0 key=3 $tmp-ten | uawk '$(NF-2)<="'${sday}'"' | getlast key=1/3 | '$(NF-3)!=8' > $tmp-kotengenka # 1:商品コード* 2:店舗グループコード* 3:店舗コード* 4:予約コード # 5:基本フラグ 6:発注先コード 7:原価(税抜) 8:原価(税込) # 9:発注単位数 10:最大発注数 11:発注開始日 12:返品不可区分 # 13:発注終了日 14:発注停止理由 15:備考 16:登録日 # 17:更新フラグ 18:適用日 19:入力者 20:入力日時 fi itouch '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _' $tmp-kotengenka # 個店設定の店展開 # $tmp-kotengenka # 1:商品コード* 2:店舗グループコード* 3:店舗コード* 4:予約コード # 5:基本フラグ 6:発注先コード 7:原価(税抜) 8:原価(税込) # 9:発注単位数 10:最大発注数 11:発注開始日 12:返品不可区分 # 13:発注終了日 14:発注停止理由 15:備考 16:登録日 # 17:更新フラグ 18:適用日 19:入力者 20:入力日時 self 1 3 7 8 6 11 13 14 9 10 12 15 17 18 19 20 $tmp-kotengenka > $tmp-kotengenka-data # 1:商品コード* 2:店舗コード* 3:原価(税抜) 4:原価(税込) # 5:発注先コード 6:発注開始日 7:発注終了日 8:発注停止理由 # 9:発注単位数 10:最大発注数 11:返品不可区分 12:備考 # 13:更新フラグ 14:適用日 15:入力者 16:入力日時 #///////////////////////////////////////////////////////////////////////// # ステップ3:店舗商品売価項目の未来履歴トランと店舗商品原価項目の未来履歴トランを連結する #///////////////////////////////////////////////////////////////////////// <中略> #///////////////////////////////////////////////////////////////////////// # 終了処理 #///////////////////////////////////////////////////////////////////////// rm -rf $TMPD & exit 0 |