UTL_MAIL.SEND

CREATE OR REPLACE PACKAGE MEW_A1_AUTO_RECEIVING_PKG IS

  PROCEDURE MAIN(RETCODE      OUT NUMBER
                ,ERRBUF       OUT VARCHAR
                ,P_CONTROL_ID NUMBER
                ,P_FILE_NAME  VARCHAR
                ,P_MAIL_TO    VARCHAR);

END;
/
CREATE OR REPLACE PACKAGE BODY MEW_A1_AUTO_RECEIVING_PKG IS

  PROCEDURE MAIN(RETCODE      OUT NUMBER
                ,ERRBUF       OUT VARCHAR
                ,P_CONTROL_ID NUMBER
                ,P_FILE_NAME  VARCHAR
                ,P_MAIL_TO    VARCHAR) IS
    CURSOR C1 IS
      SELECT RHI.HEADER_INTERFACE_ID
            ,RTI.INTERFACE_TRANSACTION_ID
            ,RTI.TO_ORGANIZATION_CODE
        FROM MEW_PO_EDI_INBOUND         MPI
            ,RCV_HEADERS_INTERFACE      RHI
            ,RCV_TRANSACTIONS_INTERFACE RTI
       WHERE MPI.DATA_ID = 'A1'
         AND MPI.IMPORT_FLAG = 'Y'
         AND NVL(MPI.STATUS
                ,'E') <> 'E'
         AND MPI.INVOICE_NUMBER = RHI.INVOICE_NUM
         AND RHI.HEADER_INTERFACE_ID = RTI.HEADER_INTERFACE_ID
         AND RTI.PROCESSING_STATUS_CODE = 'PENDING'
         AND RTI.TRANSACTION_STATUS_CODE = 'PENDING'
         AND MPI.PO_LINE_LOCATIONS_ID = RTI.PO_LINE_LOCATION_ID
            --  AND MPI.CONTROL_ID = 181749;
         AND MPI.CONTROL_ID = P_CONTROL_ID;
    V_GROUP_ID   NUMBER;
    V_REQUEST_ID NUMBER;
    V_WAIT_FLAG  BOOLEAN;
    X_PHASE      VARCHAR2(100);
    X_STATUS     VARCHAR2(100);
    X_DEV_PHASE  VARCHAR2(100);
    X_DEV_STATUS VARCHAR2(100);
    X_MESSAGE    VARCHAR2(100);
    CNT          NUMBER;
    V_MAIL_BODY  VARCHAR2(32767);
  BEGIN
    SELECT RCV_INTERFACE_GROUPS_S.NEXTVAL INTO V_GROUP_ID FROM DUAL;
    IF P_CONTROL_ID IS NOT NULL
    THEN
      FOR R1 IN C1
      LOOP
        UPDATE RCV_HEADERS_INTERFACE RHI
           SET RHI.EXPECTED_RECEIPT_DATE  = SYSDATE
              ,RHI.PROCESSING_STATUS_CODE = 'PENDING'
              ,RHI.GROUP_ID               = V_GROUP_ID
         WHERE RHI.HEADER_INTERFACE_ID = R1.HEADER_INTERFACE_ID;
     
        UPDATE RCV_TRANSACTIONS_INTERFACE RTI
           SET RTI.EXPECTED_RECEIPT_DATE   = SYSDATE
              ,RTI.PROCESSING_STATUS_CODE  = 'PENDING'
              ,RTI.TRANSACTION_STATUS_CODE = 'PENDING'
              ,RTI.GROUP_ID                = V_GROUP_ID
              ,RTI.SUBINVENTORY           =
               (SELECT SUBINV
                  FROM (SELECT MSV.SEGMENT3 SUBINV
                          FROM MEW_SUB_QUICK_TYPE_VALUE MSV
                              ,MEW_SUB_QUICK_TYPE       MST
                         WHERE MST.LOOKUP_TYPE_ID = MSV.LOOKUP_TYPE_ID
                           AND MST.LOOKUP_TYPE = 'PEWC:MEW INTRANSIT SUBINV'
                           AND MSV.SEGMENT1 = R1.TO_ORGANIZATION_CODE
                         ORDER BY MSV.SEGMENT2)
                 WHERE ROWNUM = 1)
         WHERE RTI.INTERFACE_TRANSACTION_ID = R1.INTERFACE_TRANSACTION_ID;
      END LOOP;
    ELSE
      FOR R1 IN (SELECT RHI.HEADER_INTERFACE_ID
                       ,RTI.INTERFACE_TRANSACTION_ID
                       ,RTI.TO_ORGANIZATION_CODE
                   FROM MEW_PO_EDI_INBOUND MPI
                       ,RCV_HEADERS_INTERFACE RHI
                       ,RCV_TRANSACTIONS_INTERFACE RTI
                       ,(SELECT REQUEST_ID
                           FROM (SELECT REQUEST_ID
                                   FROM FND_CONC_REQ_SUMMARY_V FC
                                  WHERE USER_CONCURRENT_PROGRAM_NAME =
                                        'MEW Import of Inbound EDI Po''s'
                                    AND TRUNC(REQUEST_DATE) < SYSDATE
                                    AND SUBSTR(FC.ARGUMENT_TEXT
                                              ,1
                                              ,INSTR(FC.ARGUMENT_TEXT
                                                    ,',') - 1) = P_FILE_NAME
                                  ORDER BY REQUEST_ID DESC)
                          WHERE ROWNUM < 3) REQ
                  WHERE MPI.DATA_ID = 'A1'
                    AND MPI.IMPORT_FLAG = 'Y'
                    AND NVL(MPI.STATUS
                           ,'E') <> 'E'
                    AND MPI.INVOICE_NUMBER = RHI.INVOICE_NUM
                    AND RHI.HEADER_INTERFACE_ID = RTI.HEADER_INTERFACE_ID
                    AND RTI.PROCESSING_STATUS_CODE = 'PENDING'
                    AND RTI.TRANSACTION_STATUS_CODE = 'PENDING'
                    AND MPI.PO_LINE_LOCATIONS_ID = RTI.PO_LINE_LOCATION_ID
                    AND MPI.REQUEST_ID = REQ.REQUEST_ID)
      LOOP
        UPDATE RCV_HEADERS_INTERFACE RHI
           SET RHI.EXPECTED_RECEIPT_DATE  = SYSDATE
              ,RHI.PROCESSING_STATUS_CODE = 'PENDING'
              ,RHI.GROUP_ID               = V_GROUP_ID
         WHERE RHI.HEADER_INTERFACE_ID = R1.HEADER_INTERFACE_ID;
     
        UPDATE RCV_TRANSACTIONS_INTERFACE RTI
           SET RTI.EXPECTED_RECEIPT_DATE   = SYSDATE
              ,RTI.PROCESSING_STATUS_CODE  = 'PENDING'
              ,RTI.TRANSACTION_STATUS_CODE = 'PENDING'
              ,RTI.GROUP_ID                = V_GROUP_ID
              ,RTI.SUBINVENTORY           =
               (SELECT SUBINV
                  FROM (SELECT MSV.SEGMENT3 SUBINV
                          FROM MEW_SUB_QUICK_TYPE_VALUE MSV
                              ,MEW_SUB_QUICK_TYPE       MST
                         WHERE MST.LOOKUP_TYPE_ID = MSV.LOOKUP_TYPE_ID
                           AND MST.LOOKUP_TYPE = 'PEWC:MEW INTRANSIT SUBINV'
                           AND MSV.SEGMENT1 = R1.TO_ORGANIZATION_CODE
                         ORDER BY MSV.SEGMENT2)
                 WHERE ROWNUM = 1)
         WHERE RTI.INTERFACE_TRANSACTION_ID = R1.INTERFACE_TRANSACTION_ID;
      END LOOP;
    END IF;
    COMMIT;
    V_REQUEST_ID := FND_REQUEST.SUBMIT_REQUEST('PO'
                                              ,'RVCTP'
                                              ,'Receiving Transaction Processor'
                                              ,NULL
                                              ,FALSE
                                              ,'BATCH'
                                              ,V_GROUP_ID);
    COMMIT;
    IF V_REQUEST_ID > 0
    THEN
      V_WAIT_FLAG := FND_CONCURRENT.WAIT_FOR_REQUEST(V_REQUEST_ID
                                                    ,60
                                                    ,0
                                                    ,X_PHASE
                                                    ,X_STATUS
                                                    ,X_DEV_PHASE
                                                    ,X_DEV_STATUS
                                                    ,X_MESSAGE);
      IF X_DEV_PHASE = 'COMPLETE' AND
         X_DEV_STATUS = 'NORMAL'
      THEN
        V_MAIL_BODY := '用户您好,以下是A1自动接收未成功的记录,请处理.' || CHR(10) ||
                       '-------------------------------------------------------------------------------------------------------------------------------' ||
                       CHR(10) ||
                       'OU        VENDOR         INVOICE#       PO#            LINE# SHIP#       QTY  ERROR_MESSAGE';
        SELECT COUNT(*)
          INTO CNT
          FROM RCV_HEADERS_INTERFACE      RHI
              ,RCV_TRANSACTIONS_INTERFACE RTI
              ,PO_INTERFACE_ERRORS        PIE
         WHERE RHI.HEADER_INTERFACE_ID = RTI.HEADER_INTERFACE_ID
           AND RTI.INTERFACE_TRANSACTION_ID = PIE.INTERFACE_TRANSACTION_ID
           AND RHI.GROUP_ID = V_GROUP_ID;
        IF NVL(CNT
              ,0) > 0
        THEN
          FOR R1 IN (SELECT HOU.ORGANIZATION_CODE  NAME
                           ,PV.SEGMENT1            VENDOR_NUMBER
                           ,RHA.INVOICE_NUM
                           ,PHA.SEGMENT1           PO_NUMBER
                           ,PLA.LINE_NUM
                           ,PLLA.SHIPMENT_NUM
                           ,RTI.QUANTITY
                           ,PIE.ERROR_MESSAGE_NAME
                           ,PIE.ERROR_MESSAGE
                       FROM RCV_HEADERS_INTERFACE        RHA
                           ,RCV_TRANSACTIONS_INTERFACE   RTI
                           ,PO_INTERFACE_ERRORS          PIE
                           ,PO_HEADERS_ALL               PHA
                           ,PO_LINES_ALL                 PLA
                           ,PO_LINE_LOCATIONS_ALL        PLLA
                           ,PO_VENDORS                   PV
                           ,ORG_ORGANIZATION_DEFINITIONS HOU
                      WHERE RHA.HEADER_INTERFACE_ID =
                            RTI.HEADER_INTERFACE_ID
                        AND RTI.INTERFACE_TRANSACTION_ID =
                            PIE.INTERFACE_LINE_ID
                        AND RTI.PO_HEADER_ID = PHA.PO_HEADER_ID
                        AND PHA.ORG_ID = HOU.OPERATING_UNIT
                        AND PHA.VENDOR_ID = PV.VENDOR_ID
                        AND RTI.PO_LINE_ID = PLA.PO_LINE_ID
                        AND RTI.PO_LINE_LOCATION_ID = PLLA.LINE_LOCATION_ID
                        AND RTI.GROUP_ID = V_GROUP_ID)
          LOOP
            V_MAIL_BODY := V_MAIL_BODY || CHR(10) ||
                           RPAD(R1.NAME
                               ,10
                               ,CHR(32)) || RPAD(R1.VENDOR_NUMBER
                                                ,15
                                                ,CHR(32)) ||
                           RPAD(NVL(R1.INVOICE_NUM
                                   ,CHR(32))
                               ,15
                               ,CHR(32)) || RPAD(R1.PO_NUMBER
                                                ,15
                                                ,CHR(32)) ||
                           RPAD(R1.LINE_NUM
                               ,6
                               ,CHR(32)) || RPAD(R1.SHIPMENT_NUM
                                                ,5
                                                ,CHR(32)) ||
                           LPAD(R1.QUANTITY
                               ,10
                               ,CHR(32)) || '  ' ||
                           RPAD(SUBSTR(R1.ERROR_MESSAGE
                                      ,1
                                      ,80)
                               ,80
                               ,CHR(32));
          END LOOP;
        END IF;
        IF P_CONTROL_ID IS NOT NULL
        THEN
          FOR R1 IN (SELECT HOU.ORGANIZATION_CODE NAME
                           ,PV.SEGMENT1           VENDOR_NUMBER
                           ,MPI.INVOICE_NUMBER
                           ,MPI.PO_NUMBER
                           ,PLA.LINE_NUM
                           ,PLLA.SHIPMENT_NUM
                           ,MPI.QUANTITY
                           ,MPI.MESSAGE
                       FROM MEW_PO_EDI_INBOUND           MPI
                           ,PO_HEADERS_ALL               PHA
                           ,PO_LINES_ALL                 PLA
                           ,PO_LINE_LOCATIONS_ALL        PLLA
                           ,ORG_ORGANIZATION_DEFINITIONS HOU
                           ,PO_VENDORS                   PV
                      WHERE MPI.PO_HEADER_ID = PHA.PO_HEADER_ID
                        AND PHA.ORG_ID = HOU.OPERATING_UNIT
                        AND PHA.VENDOR_ID = PV.VENDOR_ID
                        AND MPI.PO_LINE_ID = PLA.PO_LINE_ID
                        AND MPI.PO_LINE_LOCATIONS_ID = PLLA.LINE_LOCATION_ID
                        AND MPI.STATUS = 'E'
                        AND MPI.DATA_ID = 'A1'
                        AND MPI.CONTROL_ID = P_CONTROL_ID)
          LOOP
            V_MAIL_BODY := V_MAIL_BODY || CHR(10) ||
                           RPAD(R1.NAME
                               ,10
                               ,CHR(32)) || RPAD(R1.VENDOR_NUMBER
                                                ,15
                                                ,CHR(32)) ||
                           RPAD(NVL(R1.INVOICE_NUMBER
                                   ,CHR(32))
                               ,15
                               ,CHR(32)) || RPAD(R1.PO_NUMBER
                                                ,15
                                                ,CHR(32)) ||
                           RPAD(R1.LINE_NUM
                               ,6
                               ,CHR(32)) || RPAD(R1.SHIPMENT_NUM
                                                ,5
                                                ,CHR(32)) ||
                           LPAD(R1.QUANTITY
                               ,10
                               ,CHR(32)) || '  ' ||
                           RPAD(SUBSTR(R1.MESSAGE
                                      ,1
                                      ,80)
                               ,80
                               ,CHR(32));
          END LOOP;
        ELSE
          FOR R1 IN (SELECT HOU.ORGANIZATION_CODE NAME
                           ,PV.SEGMENT1           VENDOR_NUMBER
                           ,MPI.INVOICE_NUMBER
                           ,MPI.PO_NUMBER
                           ,PLA.LINE_NUM
                           ,PLLA.SHIPMENT_NUM
                           ,MPI.QUANTITY
                           ,MPI.MESSAGE
                       FROM MEW_PO_EDI_INBOUND MPI
                           ,PO_HEADERS_ALL PHA
                           ,PO_LINES_ALL PLA
                           ,PO_LINE_LOCATIONS_ALL PLLA
                           ,ORG_ORGANIZATION_DEFINITIONS HOU
                           ,PO_VENDORS PV
                           ,(SELECT REQUEST_ID
                               FROM (SELECT REQUEST_ID
                                       FROM FND_CONC_REQ_SUMMARY_V FC
                                      WHERE USER_CONCURRENT_PROGRAM_NAME =
                                            'MEW Import of Inbound EDI Po''s'
                                        AND TRUNC(REQUEST_DATE) < SYSDATE
                                        AND SUBSTR(FC.ARGUMENT_TEXT
                                                  ,1
                                                  ,INSTR(FC.ARGUMENT_TEXT
                                                        ,',') - 1) =
                                            P_FILE_NAME
                                      ORDER BY REQUEST_ID DESC)
                              WHERE ROWNUM < 3) REQ
                      WHERE MPI.PO_HEADER_ID = PHA.PO_HEADER_ID
                        AND PHA.ORG_ID = HOU.OPERATING_UNIT
                        AND PHA.VENDOR_ID = PV.VENDOR_ID
                        AND MPI.PO_LINE_ID = PLA.PO_LINE_ID
                        AND MPI.PO_LINE_LOCATIONS_ID = PLLA.LINE_LOCATION_ID
                        AND MPI.STATUS = 'E'
                        AND MPI.DATA_ID = 'A1'
                        AND REQ.REQUEST_ID = MPI.REQUEST_ID)
          LOOP
            V_MAIL_BODY := V_MAIL_BODY || CHR(10) ||
                           RPAD(R1.NAME
                               ,10
                               ,CHR(32)) || RPAD(R1.VENDOR_NUMBER
                                                ,15
                                                ,CHR(32)) ||
                           RPAD(NVL(R1.INVOICE_NUMBER
                                   ,CHR(32))
                               ,15
                               ,CHR(32)) || RPAD(R1.PO_NUMBER
                                                ,15
                                                ,CHR(32)) ||
                           RPAD(R1.LINE_NUM
                               ,6
                               ,CHR(32)) || RPAD(R1.SHIPMENT_NUM
                                                ,5
                                                ,CHR(32)) ||
                           LPAD(R1.QUANTITY
                               ,10
                               ,CHR(32)) || '  ' ||
                           RPAD(SUBSTR(R1.MESSAGE
                                      ,1
                                      ,80)
                               ,80
                               ,CHR(32));
          END LOOP;
        END IF;
     
        UTL_MAIL.SEND(SENDER     => 'EBS@cn.pewg.panasonic.com'
                     ,RECIPIENTS => P_MAIL_TO
                     ,MESSAGE    => V_MAIL_BODY
                     ,SUBJECT    => 'MEW EDI A1 Auto Receiving Exceptions'
                     ,MIME_TYPE  => 'text/plain;charset=ZHS16GBK');
     
        FND_FILE.PUT_LINE(FND_FILE.LOG
                         ,V_MAIL_BODY);
      END IF;
    END IF;
  END;

END;
/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值