@istest
public class OTCLogisticsBatchTest {
   static testMethod void testMethod01(){
      List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
      if (rectCo.size() == 0) {
          return;
      }
      List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
      if (rectSct.size() == 0) {
          return;
      }
      List<RecordType> rectDpt = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Account' and Name IN ('診療科 消化科', '診療科 呼吸科') order by Name desc];
      if (rectDpt.size() == 0) {
          return;
      }
       List<RecordType> rectAs = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Asset' and Name = '备品'];
      if (rectAs.size() == 0) {
          return;
      }

   
      // insert hospital
      Account company1 = new Account();
      company1.RecordTypeId = rectCo[0].Id;
      company1.Name = '病院テスト1';
      company1.OCM_man_province_txt__c = '江西';
      List<Account> hps = new Account[]{company1};
      insert hps;
        
      List<Account> dc1s = [Select Id, Name, Department_Class_Label__c, Sys_Dept_Name_Change_Chk__c from Account where Parent.Id = :company1.Id order by Department_Class_Label__c];
      
      Account depart1 = new Account();
      depart1.RecordTypeId = rectDpt[0].Id;
      depart1.Name         = '*';
      depart1.Department_Name__c  = '診療科1';
      depart1.ParentId            = dc1s[0].Id;
      depart1.Department_Class__c = dc1s[0].Id;
      depart1.Hospital__c         = company1.Id;
      depart1.OCM_man_province_txt__c = '江西';
      
      insert new Account[] {depart1};

      List<Product2> prdList = new List<Product2>();
      Product2 prd1 = new Product2();
      prd1.ProductCode_Ext__c     = 'HistoryPrd1';
      prd1.ProductCode            = 'HistoryPrd1';
      prd1.Repair_Product_Code__c = 'HistoryPrd1_RP';
      prd1.Name                   = 'HistoryPrd1';
      prd1.Manual_Entry__c        = false;
      prd1.Extend_new_product_gurantee__c = true;
      prd1.Extend_Gurantee_Start__c = Date.today().addDays(-60);
      prd1.Extend_Gurantee_End__c = Date.today().addDays(60);
      prdList.add(prd1);
      insert prdList;
  
      Asset ast = new Asset();

      ast.RecordTypeId = rectAs[0].Id;
      ast.SerialNumber = 'abcdefg';
      ast.Name = '测试资产1';
      ast.AccountId              = depart1.Id;
      ast.Department_Class__c    = dc1s[0].Id;
      ast.Hospital__c            = company1.Id;
      ast.Product2Id             = prd1.Id;
      ast.Guarantee_period_for_products__c = Date.today();
      ast.InstallDate                      = Date.today();
      ast.Manage_type__c = '个体管理';
      ast.FirstApproveDate_old__c = Date.today().addDays(-30);

      Oly_TriggerHandler.bypass('AssetHandler');

      insert ast;
      
      Asset ast1 = [select RecordTypeID__c from Asset where Id =: ast.Id];
      
      String RecordTypeID = ast1.RecordTypeID__c;
         
      System.assertEquals(RecordTypeID , ast.RecordTypeId);

      RecordType rectOpp = [select id from RecordType where IsActive = true and SobjectType = 'Opportunity' and DeveloperName = 'Opportunity' ];
      Opportunity opp = new Opportunity(
             Name='testOpp1',
             StageName='引合',
             CloseDate=Date.today(),
             AccountId=depart1.Id,
             Sales_Root__c = '販売店',
             Competitor__c ='A',
             Click_Close_Date__c = null,
             RecordType = rectOpp
      );
      insert opp;

      //注残
      Statu_Achievements__c Sac = new Statu_Achievements__c(
          name = 'zhucan_one',
          Opportunity__c = opp.id,
          DeliveryDate__c = Date.today(),
          ContractNO__c = 'ContractNO1',
          ContractAmount__c = 1000
      );
      insert Sac;

      //新建电子签收单
      eSignForm__c eSignForm = new eSignForm__c();
      eSignForm.Statu_Achievements__c = Sac.Id;
      eSignForm.Name = '::测试电子签收单';
      eSignForm.DNName__c = '006501621931';
      eSignForm.AccessoriesQualified__c = true;
      eSignForm.handleOpinionAgency__c = '哇哈哈哈哈哈哈哈哈';
      eSignForm.agencyScanDay__c = Date.today();
      eSignForm.agencySignUpDate__c =Date.today();
      eSignForm.agencyConfirmDate__c = Date.today();
      insert eSignForm;

      Statu_Achievements_DN__c  sad = new Statu_Achievements_DN__c();
      sad.Name = '006501621931';
      sad.DeliveryDate_Raw__c = '1111';
      sad.Sales_assistant_name_text__c = UserInfo.getUserId();
      sad.RC_Manager__c = UserInfo.getUserId();
      sad.EsignTestAccount__c =true;
      sad.ReturnMark__c = false;
      // sad.InstallDate__c=Date.today();
      sad.Statu_Achievements__c = 'a0N1000001LBEHrEAP';
      insert sad;
      waybill__c w = new waybill__c();
      w.waybill_number__c = '6501621931';
      insert w;
      Test.startTest();
      Database.executeBatch(new OTCLogisticsBatch(),1);
      Database.executeBatch(new OTCLogisticsBatch('006501621931',false),1);
      Test.stopTest();
   }
}